181 lines
3.6 KiB
Go
181 lines
3.6 KiB
Go
package domaintest
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gitea.dwysokinski.me/twhelp/corev3/internal/domain"
|
|
"github.com/brianvoe/gofakeit/v7"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type EnnoblementCursorConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
CreatedAt time.Time
|
|
}
|
|
|
|
func NewEnnoblementCursor(tb TestingTB, opts ...func(cfg *EnnoblementCursorConfig)) domain.EnnoblementCursor {
|
|
tb.Helper()
|
|
|
|
cfg := &EnnoblementCursorConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
CreatedAt: gofakeit.Date(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
ec, err := domain.NewEnnoblementCursor(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.CreatedAt,
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return ec
|
|
}
|
|
|
|
type EnnoblementConfig struct {
|
|
ID int
|
|
ServerKey string
|
|
VillageID int
|
|
}
|
|
|
|
func NewEnnoblement(tb TestingTB, opts ...func(cfg *EnnoblementConfig)) domain.Ennoblement {
|
|
tb.Helper()
|
|
|
|
cfg := &EnnoblementConfig{
|
|
ID: RandID(),
|
|
ServerKey: RandServerKey(),
|
|
VillageID: RandID(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
e, err := domain.UnmarshalEnnoblementFromDatabase(
|
|
cfg.ID,
|
|
cfg.ServerKey,
|
|
cfg.VillageID,
|
|
RandID(),
|
|
RandID(),
|
|
RandID(),
|
|
RandID(),
|
|
gofakeit.IntRange(1, 10000),
|
|
time.Now(),
|
|
)
|
|
require.NoError(tb, err)
|
|
|
|
return e
|
|
}
|
|
|
|
type EnnoblementWithRelationsConfig struct {
|
|
EnnoblementOptions []func(cfg *EnnoblementConfig)
|
|
VillageOptions []func(cfg *VillageConfig)
|
|
NewOwnerOptions []func(cfg *PlayerConfig)
|
|
NewTribeOptions []func(cfg *TribeConfig)
|
|
OldOwnerOptions []func(cfg *PlayerConfig)
|
|
OldTribeOptions []func(cfg *TribeConfig)
|
|
}
|
|
|
|
//nolint:gocyclo
|
|
func NewEnnoblementWithRelations(
|
|
tb TestingTB,
|
|
opts ...func(cfg *EnnoblementWithRelationsConfig),
|
|
) domain.EnnoblementWithRelations {
|
|
tb.Helper()
|
|
|
|
cfg := &EnnoblementWithRelationsConfig{}
|
|
|
|
for _, opt := range opts {
|
|
opt(cfg)
|
|
}
|
|
|
|
e := NewEnnoblement(tb, cfg.EnnoblementOptions...)
|
|
|
|
if e.VillageID() > 0 {
|
|
cfg.VillageOptions = append([]func(cfg *VillageConfig){
|
|
func(cfg *VillageConfig) {
|
|
cfg.ID = e.VillageID()
|
|
},
|
|
}, cfg.VillageOptions...)
|
|
}
|
|
|
|
if e.NewOwnerID() > 0 {
|
|
cfg.NewOwnerOptions = append([]func(cfg *PlayerConfig){
|
|
func(cfg *PlayerConfig) {
|
|
cfg.ID = e.NewOwnerID()
|
|
},
|
|
}, cfg.NewOwnerOptions...)
|
|
}
|
|
|
|
if e.NewTribeID() > 0 {
|
|
cfg.NewTribeOptions = append([]func(cfg *TribeConfig){
|
|
func(cfg *TribeConfig) {
|
|
cfg.ID = e.NewTribeID()
|
|
},
|
|
}, cfg.NewTribeOptions...)
|
|
}
|
|
|
|
if e.OldOwnerID() > 0 {
|
|
cfg.OldOwnerOptions = append([]func(cfg *PlayerConfig){
|
|
func(cfg *PlayerConfig) {
|
|
cfg.ID = e.OldOwnerID()
|
|
},
|
|
}, cfg.OldOwnerOptions...)
|
|
}
|
|
|
|
if e.OldTribeID() > 0 {
|
|
cfg.OldTribeOptions = append([]func(cfg *TribeConfig){
|
|
func(cfg *TribeConfig) {
|
|
cfg.ID = e.OldTribeID()
|
|
},
|
|
}, cfg.OldTribeOptions...)
|
|
}
|
|
|
|
var village domain.VillageMeta
|
|
if len(cfg.VillageOptions) > 0 {
|
|
village = NewVillage(tb, cfg.VillageOptions...).Meta()
|
|
}
|
|
|
|
var newOwner domain.PlayerMeta
|
|
if len(cfg.NewOwnerOptions) > 0 {
|
|
newOwner = NewPlayer(tb, cfg.NewOwnerOptions...).Meta()
|
|
}
|
|
|
|
var newTribe domain.TribeMeta
|
|
if len(cfg.NewTribeOptions) > 0 {
|
|
newTribe = NewTribe(tb, cfg.NewTribeOptions...).Meta()
|
|
}
|
|
|
|
var oldOwner domain.PlayerMeta
|
|
if len(cfg.OldOwnerOptions) > 0 {
|
|
oldOwner = NewPlayer(tb, cfg.OldOwnerOptions...).Meta()
|
|
}
|
|
|
|
var oldTribe domain.TribeMeta
|
|
if len(cfg.OldTribeOptions) > 0 {
|
|
oldTribe = NewTribe(tb, cfg.OldTribeOptions...).Meta()
|
|
}
|
|
|
|
return e.WithRelations(
|
|
village,
|
|
newOwner,
|
|
domain.NullTribeMeta{
|
|
V: newTribe,
|
|
Valid: !newTribe.IsZero(),
|
|
},
|
|
domain.NullPlayerMeta{
|
|
V: oldOwner,
|
|
Valid: !oldOwner.IsZero(),
|
|
},
|
|
domain.NullTribeMeta{
|
|
V: oldTribe,
|
|
Valid: !oldTribe.IsZero(),
|
|
},
|
|
)
|
|
}
|