feat: enable/disable notifications about internals/barbarians

This commit is contained in:
Dawid Wysokiński 2022-10-28 13:16:18 +02:00
parent 09eb88ed50
commit 4b64d0f283
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892
2 changed files with 137 additions and 7 deletions

View File

@ -365,7 +365,7 @@ func canSendEnnoblementNotificationTypeLoss(g domain.Group, e twhelp.Ennoblement
return false return false
} }
if !g.Internals && isInternal(e, monitors) { if isInternal(e, monitors) {
return false return false
} }
@ -397,7 +397,7 @@ func isGain(e twhelp.Ennoblement, monitors []domain.Monitor) bool {
break break
} }
} }
return n && e.NewOwner.Player.Tribe.Tribe.ID != e.OldOwner.Player.Tribe.Tribe.ID return n && e.NewOwner.Player.ID != e.OldOwner.Player.ID
} }
func isLoss(e twhelp.Ennoblement, monitors []domain.Monitor) bool { func isLoss(e twhelp.Ennoblement, monitors []domain.Monitor) bool {
@ -408,7 +408,7 @@ func isLoss(e twhelp.Ennoblement, monitors []domain.Monitor) bool {
break break
} }
} }
return o && e.NewOwner.Player.Tribe.Tribe.ID != e.OldOwner.Player.Tribe.Tribe.ID return o && e.NewOwner.Player.ID != e.OldOwner.Player.ID
} }
func ennoblementToDomainModel(e twhelp.Ennoblement) domain.Ennoblement { func ennoblementToDomainModel(e twhelp.Ennoblement) domain.Ennoblement {

View File

@ -310,6 +310,23 @@ func TestMonitor_Execute(t *testing.T) {
ProfileURL: uuid.NewString(), ProfileURL: uuid.NewString(),
}, },
}, },
"de:de200": {
{
ID: 300,
FullName: uuid.NewString(),
ProfileURL: uuid.NewString(),
},
{
ID: 301,
FullName: uuid.NewString(),
ProfileURL: uuid.NewString(),
},
{
ID: 302,
FullName: uuid.NewString(),
ProfileURL: uuid.NewString(),
},
},
} }
tribes := map[string][]twhelp.TribeMeta{ tribes := map[string][]twhelp.TribeMeta{
"pl:pl181": { "pl:pl181": {
@ -354,6 +371,20 @@ func TestMonitor_Execute(t *testing.T) {
ProfileURL: uuid.NewString(), ProfileURL: uuid.NewString(),
}, },
}, },
"de:de200": {
{
ID: 300,
Name: uuid.NewString(),
Tag: uuid.NewString(),
ProfileURL: uuid.NewString(),
},
{
ID: 301,
Name: uuid.NewString(),
Tag: uuid.NewString(),
ProfileURL: uuid.NewString(),
},
},
} }
players := map[string][]twhelp.PlayerMeta{ players := map[string][]twhelp.PlayerMeta{
"pl:pl181": { "pl:pl181": {
@ -428,6 +459,35 @@ func TestMonitor_Execute(t *testing.T) {
}, },
}, },
}, },
"de:de200": {
{
ID: 300,
Name: uuid.NewString(),
ProfileURL: uuid.NewString(),
Tribe: twhelp.NullTribeMeta{
Tribe: tribes["de:de200"][0],
Valid: true,
},
},
{
ID: 301,
Name: uuid.NewString(),
ProfileURL: uuid.NewString(),
Tribe: twhelp.NullTribeMeta{
Tribe: tribes["de:de200"][0],
Valid: true,
},
},
{
ID: 302,
Name: uuid.NewString(),
ProfileURL: uuid.NewString(),
Tribe: twhelp.NullTribeMeta{
Tribe: tribes["de:de200"][1],
Valid: true,
},
},
},
} }
ennoblements := map[string][]twhelp.Ennoblement{ ennoblements := map[string][]twhelp.Ennoblement{
"pl:pl181": { "pl:pl181": {
@ -458,7 +518,7 @@ func TestMonitor_Execute(t *testing.T) {
CreatedAt: time.Now().Add(-4 * time.Minute), CreatedAt: time.Now().Add(-4 * time.Minute),
}, },
{ {
ID: 3, // internal conquer, should be skipped ID: 3, // internal, should be skipped (internals disabled)
Village: villages["pl:pl181"][1], Village: villages["pl:pl181"][1],
NewOwner: twhelp.NullPlayerMeta{ NewOwner: twhelp.NullPlayerMeta{
Player: players["pl:pl181"][0], Player: players["pl:pl181"][0],
@ -471,7 +531,7 @@ func TestMonitor_Execute(t *testing.T) {
CreatedAt: time.Now().Add(-3 * time.Minute), CreatedAt: time.Now().Add(-3 * time.Minute),
}, },
{ {
ID: 4, // barbarian ID: 4, // barbarian, shouldn't be skipped (barbarians enabled)
Village: villages["pl:pl181"][2], Village: villages["pl:pl181"][2],
NewOwner: twhelp.NullPlayerMeta{ NewOwner: twhelp.NullPlayerMeta{
Player: players["pl:pl181"][0], Player: players["pl:pl181"][0],
@ -554,6 +614,44 @@ func TestMonitor_Execute(t *testing.T) {
CreatedAt: time.Now().Add(-5 * time.Minute), CreatedAt: time.Now().Add(-5 * time.Minute),
}, },
}, },
"de:de200": {
{
ID: 300, // barbarian, should be skipped (barbarians disabled)
Village: villages["de:de200"][0],
NewOwner: twhelp.NullPlayerMeta{
Player: players["de:de200"][0],
Valid: true,
},
OldOwner: twhelp.NullPlayerMeta{},
CreatedAt: time.Now().Add(-5 * time.Minute),
},
{
ID: 301, // internal, shouldn't be skipped (internals enabled)
Village: villages["de:de200"][1],
NewOwner: twhelp.NullPlayerMeta{
Player: players["de:de200"][0],
Valid: true,
},
OldOwner: twhelp.NullPlayerMeta{
Player: players["de:de200"][1],
Valid: true,
},
CreatedAt: time.Now().Add(-5 * time.Minute),
},
{
ID: 302, // internal, shouldn't be skipped (internals enabled)
Village: villages["de:de200"][2],
NewOwner: twhelp.NullPlayerMeta{
Player: players["de:de200"][0],
Valid: true,
},
OldOwner: twhelp.NullPlayerMeta{
Player: players["de:de200"][2],
Valid: true,
},
CreatedAt: time.Now().Add(-5 * time.Minute),
},
},
} }
client.ListEnnoblementsCalls( client.ListEnnoblementsCalls(
func( func(
@ -613,10 +711,22 @@ func TestMonitor_Execute(t *testing.T) {
ServerID: uuid.NewString(), ServerID: uuid.NewString(),
ChannelGains: uuid.NewString(), ChannelGains: uuid.NewString(),
ChannelLosses: uuid.NewString(), ChannelLosses: uuid.NewString(),
Barbarians: true,
ServerKey: "pl180", ServerKey: "pl180",
VersionCode: "pl", VersionCode: "pl",
CreatedAt: time.Now(), CreatedAt: time.Now(),
}, },
{
ID: uuid.NewString(),
ServerID: uuid.NewString(),
ChannelGains: uuid.NewString(),
ChannelLosses: uuid.NewString(),
Barbarians: false,
Internals: true,
ServerKey: "de200",
VersionCode: "de",
CreatedAt: time.Now(),
},
} }
groupSvc.ListReturns(groups, nil) groupSvc.ListReturns(groups, nil)
@ -659,10 +769,18 @@ func TestMonitor_Execute(t *testing.T) {
GroupID: groups[4].ID, GroupID: groups[4].ID,
CreatedAt: time.Now(), CreatedAt: time.Now(),
}, },
},
groups[5].ID: {
{ {
ID: uuid.NewString(), ID: uuid.NewString(),
TribeID: tribes["de:200"][0].ID, TribeID: tribes["de:de200"][0].ID,
GroupID: groups[4].ID, GroupID: groups[5].ID,
CreatedAt: time.Now(),
},
{
ID: uuid.NewString(),
TribeID: tribes["de:de200"][1].ID,
GroupID: groups[5].ID,
CreatedAt: time.Now(), CreatedAt: time.Now(),
}, },
}, },
@ -699,6 +817,18 @@ func TestMonitor_Execute(t *testing.T) {
ChannelID: groups[3].ChannelGains, ChannelID: groups[3].ChannelGains,
Ennoblement: ennoblementToDomainModel(ennoblements["en:en130"][2]), Ennoblement: ennoblementToDomainModel(ennoblements["en:en130"][2]),
}, },
{
Type: domain.EnnoblementNotificationTypeGain,
ServerID: groups[5].ServerID,
ChannelID: groups[5].ChannelGains,
Ennoblement: ennoblementToDomainModel(ennoblements["de:de200"][1]),
},
{
Type: domain.EnnoblementNotificationTypeGain,
ServerID: groups[5].ServerID,
ChannelID: groups[5].ChannelGains,
Ennoblement: ennoblementToDomainModel(ennoblements["de:de200"][2]),
},
} }
assert.Len(t, notifications, len(expectedNotifications)) assert.Len(t, notifications, len(expectedNotifications))
for _, n := range expectedNotifications { for _, n := range expectedNotifications {