All checks were successful
ci/woodpecker/push/govulncheck Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/tag/release Pipeline was successful
ci/woodpecker/tag/deployment Pipeline was successful
ci/woodpecker/cron/govulncheck Pipeline was successful
Reviewed-on: #52
138 lines
3.1 KiB
Go
138 lines
3.1 KiB
Go
package domaintest
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitea.dwysokinski.me/twhelp/core/internal/domain"
|
|
"github.com/brianvoe/gofakeit/v7"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type ServerSnapshotCursorConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
Date time.Time
|
|
}
|
|
|
|
func NewServerSnapshotCursor(tb TestingTB, opts ...func(cfg *ServerSnapshotCursorConfig)) domain.ServerSnapshotCursor {
|
|
tb.Helper()
|
|
|
|
cfg := &ServerSnapshotCursorConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
Date: gofakeit.Date(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
ssc, err := domain.NewServerSnapshotCursor(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.Date,
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return ssc
|
|
}
|
|
|
|
type ServerSnapshotConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
NumPlayers int
|
|
NumActivePlayers int
|
|
NumInactivePlayers int
|
|
NumTribes int
|
|
NumActiveTribes int
|
|
NumInactiveTribes int
|
|
NumVillages int
|
|
NumPlayerVillages int
|
|
NumBarbarianVillages int
|
|
NumBonusVillages int
|
|
Date time.Time
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func NewServerSnapshot(tb TestingTB, opts ...func(cfg *ServerSnapshotConfig)) domain.ServerSnapshot {
|
|
tb.Helper()
|
|
|
|
now := time.Now()
|
|
|
|
cfg := &ServerSnapshotConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
NumPlayers: gofakeit.IntRange(1, 10000),
|
|
NumActivePlayers: gofakeit.IntRange(1, 10000),
|
|
NumInactivePlayers: gofakeit.IntRange(1, 10000),
|
|
NumTribes: gofakeit.IntRange(1, 10000),
|
|
NumActiveTribes: gofakeit.IntRange(1, 10000),
|
|
NumInactiveTribes: gofakeit.IntRange(1, 10000),
|
|
NumVillages: gofakeit.IntRange(1, 10000),
|
|
NumPlayerVillages: gofakeit.IntRange(1, 10000),
|
|
NumBarbarianVillages: gofakeit.IntRange(1, 10000),
|
|
NumBonusVillages: gofakeit.IntRange(1, 10000),
|
|
Date: now,
|
|
CreatedAt: now,
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
ss, err := domain.UnmarshalServerSnapshotFromDatabase(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.NumPlayers,
|
|
cfg.NumActivePlayers,
|
|
cfg.NumInactivePlayers,
|
|
cfg.NumTribes,
|
|
cfg.NumActiveTribes,
|
|
cfg.NumInactiveTribes,
|
|
cfg.NumVillages,
|
|
cfg.NumPlayerVillages,
|
|
cfg.NumBarbarianVillages,
|
|
cfg.NumBonusVillages,
|
|
cfg.Date,
|
|
cfg.CreatedAt,
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return ss
|
|
}
|
|
|
|
type ServerSnapshotWithRelationsConfig struct {
|
|
ServerSnapshotOptions []func(cfg *ServerSnapshotConfig)
|
|
ServerOptions []func(cfg *ServerConfig)
|
|
}
|
|
|
|
func NewServerSnapshotWithRelations(
|
|
tb TestingTB,
|
|
opts ...func(cfg *ServerSnapshotWithRelationsConfig),
|
|
) domain.ServerSnapshotWithRelations {
|
|
tb.Helper()
|
|
|
|
cfg := &ServerSnapshotWithRelationsConfig{}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
ss := NewServerSnapshot(tb, cfg.ServerSnapshotOptions...)
|
|
|
|
if ss.ServerKey() != "" {
|
|
cfg.ServerOptions = append([]func(cfg *ServerConfig){
|
|
func(cfg *ServerConfig) {
|
|
cfg.Key = ss.ServerKey()
|
|
},
|
|
}, cfg.ServerOptions...)
|
|
}
|
|
|
|
var tribe domain.ServerMeta
|
|
if len(cfg.ServerOptions) > 0 {
|
|
tribe = NewServer(tb, cfg.ServerOptions...).Meta()
|
|
}
|
|
|
|
return ss.WithRelations(tribe)
|
|
}
|