dcbot/internal/domain/ennoblement_notification_test.go
Dawid Wysokiński cfbaba198a
All checks were successful
ci/woodpecker/push/govulncheck Pipeline was successful
ci/woodpecker/push/test Pipeline was successful
refactor: twhelp - migrate to /v2 API endpoints (#155)
Reviewed-on: #155
2024-05-02 05:57:24 +00:00

161 lines
3.4 KiB
Go

package domain_test
import (
"strconv"
"testing"
"gitea.dwysokinski.me/twhelp/dcbot/internal/domain"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
)
func TestNewEnnoblementNotifications(t *testing.T) {
t.Parallel()
tests := []struct {
group domain.GroupWithMonitors
ennoblements []domain.Ennoblement
gainIndexes []int
lossIndexes []int
}{
{
group: domain.GroupWithMonitors{
Group: domain.Group{
ChannelGains: uuid.NewString(),
ChannelLosses: uuid.NewString(),
},
Monitors: []domain.Monitor{
{
TribeID: 125,
},
{
TribeID: 150,
},
},
},
ennoblements: []domain.Ennoblement{
{
NewOwner: domain.PlayerMeta{
ID: 125,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 150,
},
Valid: true,
},
},
Village: domain.VillageMeta{
Player: domain.NullPlayerMeta{
Player: domain.PlayerMeta{
ID: 130,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 151,
},
Valid: true,
},
},
Valid: true,
},
},
},
{ // Barbarians == false
NewOwner: domain.PlayerMeta{
ID: 125,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 150,
},
Valid: true,
},
},
},
{ // Internals == false
NewOwner: domain.PlayerMeta{
ID: 125,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 150,
},
Valid: true,
},
},
Village: domain.VillageMeta{
Player: domain.NullPlayerMeta{
Player: domain.PlayerMeta{
ID: 130,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 125,
},
Valid: true,
},
},
Valid: true,
},
},
},
{
NewOwner: domain.PlayerMeta{
ID: 125,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 153,
},
Valid: true,
},
},
Village: domain.VillageMeta{
Player: domain.NullPlayerMeta{
Player: domain.PlayerMeta{
ID: 130,
Tribe: domain.NullTribeMeta{
Tribe: domain.TribeMeta{
ID: 150,
},
Valid: true,
},
},
Valid: true,
},
},
},
},
gainIndexes: []int{0},
lossIndexes: []int{3},
},
}
for i := range tests {
tt := tests[i]
t.Run(strconv.Itoa(i), func(t *testing.T) {
t.Parallel()
notifications := domain.NewEnnoblementNotifications(tt.group, tt.ennoblements)
assert.Len(t, notifications, len(tt.gainIndexes)+len(tt.lossIndexes))
for _, idx := range tt.gainIndexes {
assert.Contains(t, notifications, domain.EnnoblementNotification{
Type: domain.EnnoblementNotificationTypeGain,
ServerID: tt.group.ServerID,
ChannelID: tt.group.ChannelGains,
LanguageTag: tt.group.LanguageTag,
Ennoblement: tt.ennoblements[idx],
})
}
for _, idx := range tt.lossIndexes {
assert.Contains(t, notifications, domain.EnnoblementNotification{
Type: domain.EnnoblementNotificationTypeLoss,
ServerID: tt.group.ServerID,
ChannelID: tt.group.ChannelLosses,
LanguageTag: tt.group.LanguageTag,
Ennoblement: tt.ennoblements[idx],
})
}
})
}
}