All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: twhelp/core#117
677 lines
25 KiB
Go
677 lines
25 KiB
Go
package bundb_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"gitea.dwysokinski.me/twhelp/core/internal/bundb/internal/model"
|
|
|
|
"github.com/uptrace/bun/dbfixture"
|
|
|
|
"gitea.dwysokinski.me/twhelp/core/internal/bundb"
|
|
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
|
"github.com/jackc/pgerrcode"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/uptrace/bun/driver/pgdriver"
|
|
)
|
|
|
|
func TestPlayer_CreateOrUpdate(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
db := newDB(t)
|
|
fixture := loadFixtures(t, db)
|
|
repo := bundb.NewPlayer(db)
|
|
|
|
t.Run("OK", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
serverKey := "pl169"
|
|
tribeTT := getTribeFromFixture(t, fixture, "pl169-tt")
|
|
tribeCSA := getTribeFromFixture(t, fixture, "pl169-csa")
|
|
createParams := []domain.CreatePlayerParams{
|
|
{
|
|
OpponentsDefeated: domain.OpponentsDefeated{
|
|
RankAtt: 1,
|
|
ScoreAtt: 2,
|
|
RankDef: 3,
|
|
ScoreDef: 4,
|
|
RankSup: 5,
|
|
ScoreSup: 6,
|
|
RankTotal: 7,
|
|
ScoreTotal: 8,
|
|
},
|
|
ID: 999,
|
|
Name: "name 999",
|
|
NumVillages: 3,
|
|
Points: 4,
|
|
Rank: 6,
|
|
TribeID: tribeTT.ID,
|
|
ProfileURL: "profile-999",
|
|
ServerKey: serverKey,
|
|
},
|
|
{
|
|
OpponentsDefeated: domain.OpponentsDefeated{
|
|
RankAtt: 8,
|
|
ScoreAtt: 7,
|
|
RankDef: 6,
|
|
ScoreDef: 5,
|
|
RankSup: 4,
|
|
ScoreSup: 3,
|
|
RankTotal: 2,
|
|
ScoreTotal: 1,
|
|
},
|
|
ID: 998,
|
|
Name: "name 998",
|
|
NumVillages: 5,
|
|
Points: 4,
|
|
Rank: 2,
|
|
ProfileURL: "profile-998",
|
|
ServerKey: serverKey,
|
|
},
|
|
}
|
|
updateParams := make([]domain.CreatePlayerParams, 0, len(createParams))
|
|
ids := make([]int64, 0, len(createParams))
|
|
for i, p := range createParams {
|
|
var tribeID int64
|
|
if i%2 == 0 {
|
|
tribeID = tribeCSA.ID
|
|
}
|
|
|
|
updateParams = append(updateParams, domain.CreatePlayerParams{
|
|
OpponentsDefeated: domain.OpponentsDefeated{
|
|
RankAtt: p.RankAtt + 1,
|
|
ScoreAtt: p.ScoreAtt + 1,
|
|
RankDef: p.RankDef + 1,
|
|
ScoreDef: p.ScoreDef + 1,
|
|
RankSup: p.RankSup + 1,
|
|
ScoreSup: p.ScoreSup + 1,
|
|
RankTotal: p.RankTotal + 1,
|
|
ScoreTotal: p.ScoreTotal + 1,
|
|
},
|
|
ID: p.ID,
|
|
Name: p.Name + "Update",
|
|
NumVillages: p.NumVillages + 1,
|
|
Points: p.Points + 1,
|
|
Rank: p.Rank + 1,
|
|
TribeID: tribeID,
|
|
ProfileURL: p.ProfileURL + "Update",
|
|
ServerKey: p.ServerKey,
|
|
})
|
|
ids = append(ids, p.ID)
|
|
}
|
|
listParams := domain.ListPlayersParams{
|
|
IDs: ids,
|
|
ServerKeys: []string{serverKey},
|
|
}
|
|
ctx := context.Background()
|
|
|
|
assert.NoError(t, repo.CreateOrUpdate(ctx, createParams...))
|
|
createdPlayers, _, err := repo.List(ctx, listParams)
|
|
assert.NoError(t, err)
|
|
assertCreatedPlayers(t, createParams, createdPlayers)
|
|
|
|
assert.NoError(t, repo.CreateOrUpdate(ctx, updateParams...))
|
|
updatedPlayers, _, err := repo.List(ctx, listParams)
|
|
assert.NoError(t, err)
|
|
assertCreatedPlayers(t, updateParams, updatedPlayers)
|
|
})
|
|
|
|
t.Run("OK: len(params) == 0", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
assert.NoError(t, repo.CreateOrUpdate(context.Background()))
|
|
})
|
|
|
|
t.Run("ERR: server must exist in the db", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
err := repo.CreateOrUpdate(context.Background(), domain.CreatePlayerParams{
|
|
OpponentsDefeated: domain.OpponentsDefeated{
|
|
RankAtt: 1,
|
|
ScoreAtt: 2,
|
|
RankDef: 3,
|
|
ScoreDef: 4,
|
|
RankSup: 5,
|
|
ScoreSup: 6,
|
|
RankTotal: 7,
|
|
ScoreTotal: 8,
|
|
},
|
|
ID: 999,
|
|
Name: "name 999",
|
|
NumVillages: 3,
|
|
Points: 4,
|
|
Rank: 6,
|
|
ServerKey: "pl999",
|
|
})
|
|
var pgErr pgdriver.Error
|
|
assert.ErrorAs(t, err, &pgErr)
|
|
assert.Equal(t, pgerrcode.ForeignKeyViolation, pgErr.Field('C'))
|
|
assert.Equal(t, "players_server_key_fkey", pgErr.Field('n'))
|
|
})
|
|
}
|
|
|
|
func TestPlayer_DeleteByID(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
db := newDB(t)
|
|
fixture := loadFixtures(t, db)
|
|
repo := bundb.NewPlayer(db)
|
|
|
|
t.Run("OK", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
playerChceszRemont := getPlayerFromFixture(t, fixture, "pl169-chcesz-remont")
|
|
require.Zero(t, playerChceszRemont.DeletedAt)
|
|
playerMaddov := getPlayerFromFixture(t, fixture, "pl169-maddov")
|
|
require.Zero(t, playerMaddov.DeletedAt)
|
|
|
|
assert.NoError(t, repo.DeleteByID(context.Background(), playerChceszRemont.ID, playerMaddov.ID))
|
|
players, _, err := repo.List(context.Background(), domain.ListPlayersParams{
|
|
IDs: []int64{playerChceszRemont.ID, playerMaddov.ID},
|
|
ServerKeys: []string{playerChceszRemont.ServerKey},
|
|
})
|
|
assert.NoError(t, err)
|
|
assert.Len(t, players, 2)
|
|
for _, player := range players {
|
|
assert.WithinDuration(t, time.Now(), player.DeletedAt, 1*time.Second)
|
|
assert.Zero(t, player.TribeID)
|
|
}
|
|
})
|
|
|
|
t.Run("OK: len(ids) == 0", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
assert.NoError(t, repo.DeleteByID(context.Background()))
|
|
})
|
|
}
|
|
|
|
func TestPlayer_List(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
db := newDB(t)
|
|
fixture := loadFixtures(t, db)
|
|
repo := bundb.NewPlayer(db)
|
|
players := getAllPlayersFromFixture(t, fixture)
|
|
|
|
type expectedPlayer struct {
|
|
id int64
|
|
tribeID int64
|
|
serverKey string
|
|
}
|
|
|
|
allPlayers := make([]expectedPlayer, 0, len(players))
|
|
for _, p := range players {
|
|
allPlayers = append(allPlayers, expectedPlayer{
|
|
id: p.ID,
|
|
serverKey: p.ServerKey,
|
|
})
|
|
}
|
|
|
|
//nolint:prealloc
|
|
var playersIT70 []expectedPlayer
|
|
for _, p := range players {
|
|
if p.ServerKey != "it70" {
|
|
continue
|
|
}
|
|
|
|
playersIT70 = append(playersIT70, expectedPlayer{
|
|
id: p.ID,
|
|
serverKey: p.ServerKey,
|
|
})
|
|
}
|
|
|
|
tests := []struct {
|
|
name string
|
|
params domain.ListPlayersParams
|
|
expectedPlayers []expectedPlayer
|
|
expectedCount int64
|
|
}{
|
|
{
|
|
name: "Count=true",
|
|
params: domain.ListPlayersParams{Count: true},
|
|
expectedPlayers: allPlayers,
|
|
expectedCount: int64(len(allPlayers)),
|
|
},
|
|
{
|
|
name: "Count=false",
|
|
params: domain.ListPlayersParams{Count: false},
|
|
expectedPlayers: allPlayers,
|
|
expectedCount: 0,
|
|
},
|
|
{
|
|
name: "ServerKeys=[it70],Count=true",
|
|
params: domain.ListPlayersParams{ServerKeys: []string{"it70"}, Count: true},
|
|
expectedPlayers: playersIT70,
|
|
expectedCount: int64(len(playersIT70)),
|
|
},
|
|
{
|
|
name: "IDs=[699734930],Count=true",
|
|
params: domain.ListPlayersParams{IDs: []int64{699734930}, Count: true},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 699734930,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 1,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],IDGT=6180190,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
IDGT: domain.NullInt64{Valid: true, Int64: 6180190},
|
|
ServerKeys: []string{"pl169"},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
{
|
|
id: 699736927,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 2,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ID,Direction=ASC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByID, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 6180190,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ID,Direction=DESC}],Offset=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByID, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Offset: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 6180190,
|
|
serverKey: "pl169",
|
|
},
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreAtt,Direction=ASC}],Offset=2,Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreAtt, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
Offset: 2,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 699736927,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreAtt,Direction=DESC}],Offset=2,Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreAtt, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
Offset: 2,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreDef,Direction=ASC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreDef, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreDef,Direction=DESC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreDef, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 6180190,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreSup,Direction=ASC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreSup, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 699736927,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreSup,Direction=DESC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreSup, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreTotal,Direction=ASC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreTotal, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8419570,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=ScoreTotal,Direction=DESC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByScoreTotal, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 6180190,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[6180190,8419570,699736927],Sort=[{By=Points,Direction=ASC}],Limit=1,ServerKeys=[pl169],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{6180190, 8419570, 699736927},
|
|
ServerKeys: []string{"pl169"},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByPoints, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 699736927,
|
|
serverKey: "pl169",
|
|
},
|
|
},
|
|
expectedCount: 3,
|
|
},
|
|
{
|
|
name: "IDs=[1111,1112],Deleted=true,Sort=[{By=DeletedAt,Direction=ASC}],Limit=1,ServerKeys=[en113],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{1111, 1112},
|
|
ServerKeys: []string{"en113"},
|
|
Deleted: domain.NullBool{
|
|
Bool: true,
|
|
Valid: true,
|
|
},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByDeletedAt, Direction: domain.SortDirectionASC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 1112,
|
|
serverKey: "en113",
|
|
},
|
|
},
|
|
expectedCount: 2,
|
|
},
|
|
{
|
|
name: "IDs=[1111,1112],Deleted=true,Sort=[{By=DeletedAt,Direction=DESC}],Limit=1,ServerKeys=[en113],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{1111, 1112},
|
|
ServerKeys: []string{"en113"},
|
|
Deleted: domain.NullBool{
|
|
Bool: true,
|
|
Valid: true,
|
|
},
|
|
Sort: []domain.PlayerSort{{By: domain.PlayerSortByDeletedAt, Direction: domain.SortDirectionDESC}},
|
|
Pagination: domain.Pagination{
|
|
Limit: 1,
|
|
},
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 1111,
|
|
serverKey: "en113",
|
|
},
|
|
},
|
|
expectedCount: 2,
|
|
},
|
|
{
|
|
name: "IDs=[8625053,622676],IncludeTribe=true,ServerKeys=[en113],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
IDs: []int64{8625053, 622676},
|
|
ServerKeys: []string{"en113"},
|
|
IncludeTribe: true,
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 8625053,
|
|
tribeID: 122,
|
|
serverKey: "en113",
|
|
},
|
|
{
|
|
id: 622676,
|
|
tribeID: 122,
|
|
serverKey: "en113",
|
|
},
|
|
},
|
|
expectedCount: 2,
|
|
},
|
|
{
|
|
name: "Deleted=true,IncludeTribe=true,ServerKeys=[en113],Count=true",
|
|
params: domain.ListPlayersParams{
|
|
Deleted: domain.NullBool{Bool: true, Valid: true},
|
|
ServerKeys: []string{"en113"},
|
|
IncludeTribe: true,
|
|
Count: true,
|
|
},
|
|
expectedPlayers: []expectedPlayer{
|
|
{
|
|
id: 1111,
|
|
tribeID: 0,
|
|
serverKey: "en113",
|
|
},
|
|
{
|
|
id: 1112,
|
|
tribeID: 0,
|
|
serverKey: "en113",
|
|
},
|
|
},
|
|
expectedCount: 2,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
tt := tt
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
res, count, err := repo.List(context.Background(), tt.params)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tt.expectedCount, count)
|
|
assert.Len(t, res, len(tt.expectedPlayers))
|
|
for _, expPlayer := range tt.expectedPlayers {
|
|
found := false
|
|
|
|
for _, player := range res {
|
|
if player.ID != expPlayer.id {
|
|
continue
|
|
}
|
|
|
|
if player.ServerKey != expPlayer.serverKey {
|
|
continue
|
|
}
|
|
|
|
if player.Tribe.Tribe.ID != expPlayer.tribeID {
|
|
continue
|
|
}
|
|
|
|
found = true
|
|
break
|
|
}
|
|
|
|
assert.True(t, found, "player (id=%d,tribeID=%d,serverkey=%s) not found",
|
|
expPlayer.id,
|
|
expPlayer.tribeID,
|
|
expPlayer.serverKey,
|
|
)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func assertCreatedPlayers(tb testing.TB, params []domain.CreatePlayerParams, players []domain.PlayerWithRelations) {
|
|
tb.Helper()
|
|
|
|
assert.Len(tb, players, len(params))
|
|
for _, p := range params {
|
|
var player domain.PlayerWithRelations
|
|
for _, pl := range players {
|
|
if pl.ID == p.ID && pl.ServerKey == p.ServerKey {
|
|
player = pl
|
|
break
|
|
}
|
|
}
|
|
assert.EqualValues(tb, p.OpponentsDefeated, player.OpponentsDefeated)
|
|
assert.Equal(tb, p.ID, player.ID)
|
|
assert.Equal(tb, p.Name, player.Name)
|
|
assert.Equal(tb, p.NumVillages, player.NumVillages)
|
|
assert.Equal(tb, p.Points, player.Points)
|
|
assert.Equal(tb, p.Rank, player.Rank)
|
|
assert.Equal(tb, p.TribeID, player.TribeID)
|
|
assert.Equal(tb, p.ProfileURL, player.ProfileURL)
|
|
assert.Equal(tb, p.ServerKey, player.ServerKey)
|
|
assert.Zero(tb, player.DeletedAt)
|
|
assert.WithinDuration(tb, player.CreatedAt, time.Now(), 1*time.Second)
|
|
}
|
|
}
|
|
|
|
func getAllPlayersFromFixture(tb testing.TB, fixture *dbfixture.Fixture) []model.Player {
|
|
tb.Helper()
|
|
|
|
//nolint:lll
|
|
ids := []string{"de188-1scoo", "de188-g-sus", "de188-rest-in-peace", "de188-bob-der-botmeister", "de188-riou89", "de188-nobelpreis", "de188-silberkiller", "de188-voitijaner", "de188-august-iner", "de188-ina-instabil", "de188-doch-nicht-zu-netto", "de188-stefan-der-i", "de188-undercover", "de188-kibitz", "de188-udosnack", "de188-colderaser", "de188-thegenetix", "de188-awesome-bigyves", "de188-crowns", "de188-kaptnblaubar", "de188-geheimratsecke", "de188-schnapsnasenhai", "de188-mahagoni", "de188-yuri-tarded", "de188-augustus-der-ii", "de188-st-rike", "de188-udin-1", "de188-werner-frankfurt", "de188-aletheias-leuchtfeuer", "de188-tim212", "de188-creepy-creeperton", "de188-mal-eleve", "de188-blueman65", "de188-tongomakalele", "en113-zero-two", "en113-makobex", "en113-dont-mind-me", "en113-deleted-1", "en113-deleted-2", "en113-twoangrykittens", "en113-danneboii", "en113-kingjay321", "en113-julius-caesar", "en113-scarlett-maiden", "en113-mrburger", "en113-rain", "en113-geegee", "en113-monkey-on-camel", "en113-copelaax", "en113-bluedog2000", "en113-turambar", "en113-dreaaamyr", "en113-amans", "en113-krige", "en113-meaningless", "en113-a-k-a-elmoo", "en113-dummbullen2", "en113-syncopic", "en113-jamaicanmebacon", "en113-kjpker", "en113-transistor1337", "en113-vercingetorix", "en113-mr-noob", "en113-doctor-strangewar", "en113-aimbots-here", "en113-rickieboyo", "en113-curious-george", "en113-guy-with-no-humor", "en113-twisted-horizons", "en113-hide-n-seek", "en113-survivants", "en113-talli56", "en113-jupp", "it70-squirtle", "it70-nero-il-nerd", "it70-tomaskh-96", "it70-cavani-is-back", "it70-pise17", "it70-doublechen", "it70-sauron", "it70-zambo700", "it70-biondo", "it70-insert-coin", "it70-night-st4lker", "it70-idealeultras", "it70-fabeer", "it70-king-tork", "it70-march96", "it70-jinchuriki", "it70-close-to-the-edge", "it70-wearepro", "it70-durocell", "it70-angelus29", "it70-devan95", "it70-giek", "it70-slender-man", "it70-igneel", "it70-lodi94", "it70-meganium", "it70-manura", "it70-stemax", "it70-fgregoris", "it70-morrodoro", "it70-eleinad", "it70-herbert-ballerina", "it70-frtd", "it70-bobo876", "it70-pandapizza", "it70-manosul", "it70-robertoveronica", "it70-chained-censurato", "it70-michelezambo", "it70-sir-lion", "it70-hexe", "it70-scotch", "it70-the-executioner", "it70-paboo", "it70-paracetamolo", "it70-monkey-d-luffy", "it70-carlo00mark", "it70-the8major", "it70-kees-popinga", "it70-xxmarcoxx", "it70-r1c0h", "it70-setrakusra", "it70-kobras", "it70-slayer", "it70-tua-madre", "it70-balor", "it70-singdeath", "it70-love-farm", "it70-luisabruna", "it70-pokermania", "it70-snabol", "it70-luciofox695", "it70-matmac", "it70-zfiire", "it70-gogeta-lv4", "it70-ciccio-il-figo", "it70-loryely1", "it70-clodia", "it70-frank", "it70-simonzello", "it70-sir-bestia91", "it70-isterica85", "it70-geser", "it70-supergini", "it70-monryt", "it70-saxman", "it70-3erzad0se", "it70-snipercat", "it70-aco950", "it70-jambo", "it70-makkiato", "it70-unaltravolta", "it70-iormund", "it70-vodilka", "it70-sirbanana", "it70-re-sbattila83", "it70-smokingwhite", "it70-lavatrici-shura", "it70-peppe-93", "it70-time-out", "it70-iena73", "it70-masco529", "it70-ggigazz", "it70-palaandmes-i-muratori", "it70-monica-vitti", "it70-balerion78", "it70-ramuz", "it70-itop", "it70-realnot16", "it70-sunjii", "it70-marcolinomax", "it70-erjus", "it70-pulcinella", "it70-onivinz", "it70-lordmasaniello", "it70-kronus", "it70-inaros", "it70-crows", "it70-bibi95", "it70-ultraquantum", "it70-tobias-fate", "it70-sarchiapone", "it70-wolverinexxx", "it70-draco15", "it70-don-mayo", "it70-fuunnygaamees", "it70-arbegas", "it70-elaheart", "it70-loveless", "it70-alfarabe", "it70-maddaismadda", "pl169-chcesz-remont", "pl169-maddov", "pl169-bociarze", "pl169-83ania83-x-radwalk3", "pl169-tomasz-lomot", "pl169-iwan-23-2", "pl169-combobombo", "pl169-szunaj23", "pl169-definitelyrlythed0orek", "pl169-xkentinpl", "pl169-charfa", "pl169-dasilva2402", "pl169-deveste", "pl169-brown", "pl169-kubekxd11", "pl169-fristajla", "pl169-sandre", "pl169-notfair", "pl169-kuzyn-tymoteusz", "pl169-xerios", "pl169-alessaandra", "pl169-ryju15", "pl169-bucks", "pl169-redram", "pl169-pawcio231", "pl169-bujaki-top", "pl169-bystek7", "pl169-suppx", "pl169-dzymi3", "pl169-george74", "pl169-before1995", "pl169-maciob1997", "pl169-luxipux", "pl169-krysian997", "pl169-kampaj3", "pl169-sebaqwe97", "pl169-k4miru", "pl169-mackobl14", "pl169-wezu", "pl169-dobrodziej-i-wspanialy", "pl169-hitman003", "pl169-pijaniibracia", "pl169-japczan", "pl169-future-traveler", "pl169-mercel", "pl169-xkikutx", "pl169-brisingr", "pl169-krulik", "pl169-farmier-und-mroczny", "pl169-donszwagreone", "pl169-kicka14", "pl169-jeku", "pl169-nuben", "pl169-asd-sa", "pl169-weebuus", "pl169-dziki-zwierzz", "pl169-krismal", "pl169-shotasik", "pl169-mr-dymer", "pl169-marcinfix", "pl169-100dni", "pl169-bax8009", "pl169-born2befree", "pl169-kakares18", "pl169-kuzyn-bartosz", "pl169-etowy89", "pl169-xhavajek", "pl169-zulbert", "pl169-brat447", "pl169-vequs", "pl169-loalanek", "pl169-ladylonia", "pl169-fomiczowka", "pl169-tomi77", "pl169-luki-99", "pl169-revrand", "pl169-sir-rekin-ii", "pl169-olineekk", "pl169-pjetreq", "pl169-psykoo", "pl169-majson-x-szef-ryszard", "pl169-szukajmnie", "pl169-krulandrzej", "pl169-piotrhs", "pl169-renieek", "pl169-aquel", "pl169-walka500", "pl169-kuba1845", "pl169-johnyyyy", "pl169-fresio", "pl169-fkg007", "pl169-nulja", "pl169-spojler201", "pl169-perezkcn", "pl169-wojcieho97", "pl169-aissa", "pl169-wuja", "pl169-krystian0825", "pl169-sugardandy", "pl169-hera1", "pl169-miru", "pl169-anabolic250", "pl169-pepe125", "pl169-xxwiedzminxx", "pl169-matekmata", "pl169-croussant", "pl169-rafaldan", "pl169-bafik2004", "pl169-stine94", "pl169-mklo12", "pl169-rutecky", "pl169-artpaw", "pl169-dat", "pl169-rohhan415", "pl169-lihtum", "pl169-tann", "pl169-innosensq", "pl169-matex50", "pl169-stachu1223", "pl169-sew112", "pl169-krzok14", "pl169-master-wir", "pl169-cosiepaczys", "pl169-plasil230415", "pl169-scarface91", "pl169-ravcio", "pl169-banan1223", "pl169-geraltv47", "pl169-wlodar-staragwardia", "pl169-holweko", "pl169-expresowy", "pl169-max-delor", "pl169-ogolnietokristo", "pl169-nervouse", "pl169-czapek", "pl169-papcio-krol", "pl169-zemstapowraca", "pl169-pawtok", "pl169-nyga69xd", "pl169-tarcza55", "pl169-krugerses", "pl169-chaos-black", "pl169-kodeiniarz", "pl169-magnats", "pl169-gopnik", "pl169-bonnie-i-clyde", "pl169-tima4", "pl169-hexuuu", "pl169-zmuutowanny", "pl169-expertocredite", "pl169-wdamianse", "pl169-zeta-reticuli", "pl169-miden", "pl169-lodar93", "pl169-soa1", "pl169-dzieszko1", "pl169-llllllllllllllllllllllll", "pl169-alicei", "pl169-yardys", "pl169-czarnydzeedaj", "pl169-romekwislatsw", "pl169-ernialdinio", "pl169-bartiii95", "pl169-wrobel-pogromca", "pl169-pablo-pablo", "pl169-milwaukee", "pl169-lukizak3", "pl169-marek", "pl169-tyson-23", "pl169-nazar1908", "pl169-niezwyciezony89xbiczbozy", "pl169-hatnter", "pl169-grigor-2007", "pl169-menager86", "pl169-easy26", "pl169-reco", "pl169-pawel-katalonczyk", "pl169-nygusovsky", "pl169-lazan", "pl169-patronusek", "pl169-macky", "pl169-bpawel10", "pl169-discordia", "pl169-paxxx", "pl169-darkoniks", "pl169-sir-jago", "pl169-abuk888", "pl169-shym", "pl169-cris92", "pl169-moniullka987", "pl169-boteczeq-aka-lease", "pl169-3lobit", "pl169-mujdom11", "pl169-szilka", "pl169-mariel", "pl169-malamii", "pl169-beba1234ify", "pl169-mareczekcukiereczek", "pl169-lord5daniel", "pl169-tiensinhan"}
|
|
|
|
players := make([]model.Player, 0, len(ids))
|
|
for _, id := range ids {
|
|
players = append(players, getPlayerFromFixture(tb, fixture, id))
|
|
}
|
|
|
|
return players
|
|
}
|
|
|
|
func getPlayerFromFixture(tb testing.TB, fixture *dbfixture.Fixture, id string) model.Player {
|
|
tb.Helper()
|
|
|
|
row, err := fixture.Row("Player." + id)
|
|
require.NoError(tb, err)
|
|
p, ok := row.(*model.Player)
|
|
require.True(tb, ok)
|
|
return *p
|
|
}
|