2023-07-09 05:44:35 +00:00
|
|
|
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{
|
|
|
|
{
|
2024-05-02 05:57:24 +00:00
|
|
|
NewOwner: domain.PlayerMeta{
|
|
|
|
ID: 125,
|
|
|
|
Tribe: domain.NullTribeMeta{
|
|
|
|
Tribe: domain.TribeMeta{
|
|
|
|
ID: 150,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
2024-05-02 05:57:24 +00:00
|
|
|
Valid: true,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
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
|
2024-05-02 05:57:24 +00:00
|
|
|
NewOwner: domain.PlayerMeta{
|
|
|
|
ID: 125,
|
|
|
|
Tribe: domain.NullTribeMeta{
|
|
|
|
Tribe: domain.TribeMeta{
|
|
|
|
ID: 150,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
2024-05-02 05:57:24 +00:00
|
|
|
Valid: true,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{ // Internals == false
|
2024-05-02 05:57:24 +00:00
|
|
|
NewOwner: domain.PlayerMeta{
|
|
|
|
ID: 125,
|
|
|
|
Tribe: domain.NullTribeMeta{
|
|
|
|
Tribe: domain.TribeMeta{
|
|
|
|
ID: 150,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
2024-05-02 05:57:24 +00:00
|
|
|
Valid: true,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
Village: domain.VillageMeta{
|
|
|
|
Player: domain.NullPlayerMeta{
|
|
|
|
Player: domain.PlayerMeta{
|
|
|
|
ID: 130,
|
|
|
|
Tribe: domain.NullTribeMeta{
|
|
|
|
Tribe: domain.TribeMeta{
|
|
|
|
ID: 125,
|
|
|
|
},
|
|
|
|
Valid: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Valid: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
2024-05-02 05:57:24 +00:00
|
|
|
NewOwner: domain.PlayerMeta{
|
|
|
|
ID: 125,
|
|
|
|
Tribe: domain.NullTribeMeta{
|
|
|
|
Tribe: domain.TribeMeta{
|
|
|
|
ID: 153,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
2024-05-02 05:57:24 +00:00
|
|
|
Valid: true,
|
2023-07-09 05:44:35 +00:00
|
|
|
},
|
|
|
|
},
|
|
|
|
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],
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|