151 lines
2.9 KiB
Go
151 lines
2.9 KiB
Go
package domaintest
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
|
"github.com/brianvoe/gofakeit/v7"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type TribeChangeCursorConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func NewTribeChangeCursor(tb TestingTB, opts ...func(cfg *TribeChangeCursorConfig)) domain.TribeChangeCursor {
|
|
tb.Helper()
|
|
|
|
cfg := &TribeChangeCursorConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
CreatedAt: gofakeit.Date(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
tcc, err := domain.NewTribeChangeCursor(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.CreatedAt,
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return tcc
|
|
}
|
|
|
|
type TribeChangeConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
PlayerID int
|
|
OldTribeID int
|
|
NewTribeID int
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func NewTribeChange(tb TestingTB, opts ...func(cfg *TribeChangeConfig)) domain.TribeChange {
|
|
tb.Helper()
|
|
|
|
cfg := &TribeChangeConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
PlayerID: RandID(),
|
|
OldTribeID: RandID(),
|
|
NewTribeID: RandID(),
|
|
CreatedAt: time.Now(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
tc, err := domain.UnmarshalTribeChangeFromDatabase(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.PlayerID,
|
|
cfg.OldTribeID,
|
|
cfg.NewTribeID,
|
|
cfg.CreatedAt,
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return tc
|
|
}
|
|
|
|
type TribeChangeWithRelationsConfig struct {
|
|
TribeChangeOptions []func(cfg *TribeChangeConfig)
|
|
PlayerOptions []func(cfg *PlayerConfig)
|
|
OldTribeOptions []func(cfg *TribeConfig)
|
|
NewTribeOptions []func(cfg *TribeConfig)
|
|
}
|
|
|
|
//nolint:gocyclo
|
|
func NewTribeChangeWithRelations(
|
|
tb TestingTB,
|
|
opts ...func(cfg *TribeChangeWithRelationsConfig),
|
|
) domain.TribeChangeWithRelations {
|
|
tb.Helper()
|
|
|
|
cfg := &TribeChangeWithRelationsConfig{}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
tc := NewTribeChange(tb, cfg.TribeChangeOptions...)
|
|
|
|
if tc.PlayerID() > 0 {
|
|
cfg.PlayerOptions = append([]func(cfg *PlayerConfig){
|
|
func(cfg *PlayerConfig) {
|
|
cfg.ID = tc.PlayerID()
|
|
},
|
|
}, cfg.PlayerOptions...)
|
|
}
|
|
|
|
if tc.OldTribeID() > 0 {
|
|
cfg.OldTribeOptions = append([]func(cfg *TribeConfig){
|
|
func(cfg *TribeConfig) {
|
|
cfg.ID = tc.OldTribeID()
|
|
},
|
|
}, cfg.OldTribeOptions...)
|
|
}
|
|
|
|
if tc.NewTribeID() > 0 {
|
|
cfg.NewTribeOptions = append([]func(cfg *TribeConfig){
|
|
func(cfg *TribeConfig) {
|
|
cfg.ID = tc.NewTribeID()
|
|
},
|
|
}, cfg.NewTribeOptions...)
|
|
}
|
|
|
|
var player domain.PlayerMeta
|
|
if len(cfg.PlayerOptions) > 0 {
|
|
player = NewPlayer(tb, cfg.PlayerOptions...).Meta()
|
|
}
|
|
|
|
var oldTribe domain.TribeMeta
|
|
if len(cfg.OldTribeOptions) > 0 {
|
|
oldTribe = NewTribe(tb, cfg.OldTribeOptions...).Meta()
|
|
}
|
|
|
|
var newTribe domain.TribeMeta
|
|
if len(cfg.NewTribeOptions) > 0 {
|
|
newTribe = NewTribe(tb, cfg.NewTribeOptions...).Meta()
|
|
}
|
|
|
|
return tc.WithRelations(
|
|
player,
|
|
domain.NullTribeMeta{
|
|
V: oldTribe,
|
|
Valid: !oldTribe.IsZero(),
|
|
},
|
|
domain.NullTribeMeta{
|
|
V: newTribe,
|
|
Valid: !newTribe.IsZero(),
|
|
},
|
|
)
|
|
}
|