From 4b64d0f283678182d03e991790d5a167299e965c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wysoki=C5=84ski?= Date: Fri, 28 Oct 2022 13:16:18 +0200 Subject: [PATCH] feat: enable/disable notifications about internals/barbarians --- internal/service/monitor.go | 6 +- internal/service/monitor_test.go | 138 ++++++++++++++++++++++++++++++- 2 files changed, 137 insertions(+), 7 deletions(-) diff --git a/internal/service/monitor.go b/internal/service/monitor.go index a2777a2..d3e8946 100644 --- a/internal/service/monitor.go +++ b/internal/service/monitor.go @@ -365,7 +365,7 @@ func canSendEnnoblementNotificationTypeLoss(g domain.Group, e twhelp.Ennoblement return false } - if !g.Internals && isInternal(e, monitors) { + if isInternal(e, monitors) { return false } @@ -397,7 +397,7 @@ func isGain(e twhelp.Ennoblement, monitors []domain.Monitor) bool { 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 { @@ -408,7 +408,7 @@ func isLoss(e twhelp.Ennoblement, monitors []domain.Monitor) bool { 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 { diff --git a/internal/service/monitor_test.go b/internal/service/monitor_test.go index 19e01b7..86e8360 100644 --- a/internal/service/monitor_test.go +++ b/internal/service/monitor_test.go @@ -310,6 +310,23 @@ func TestMonitor_Execute(t *testing.T) { 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{ "pl:pl181": { @@ -354,6 +371,20 @@ func TestMonitor_Execute(t *testing.T) { 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{ "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{ "pl:pl181": { @@ -458,7 +518,7 @@ func TestMonitor_Execute(t *testing.T) { 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], NewOwner: twhelp.NullPlayerMeta{ Player: players["pl:pl181"][0], @@ -471,7 +531,7 @@ func TestMonitor_Execute(t *testing.T) { CreatedAt: time.Now().Add(-3 * time.Minute), }, { - ID: 4, // barbarian + ID: 4, // barbarian, shouldn't be skipped (barbarians enabled) Village: villages["pl:pl181"][2], NewOwner: twhelp.NullPlayerMeta{ Player: players["pl:pl181"][0], @@ -554,6 +614,44 @@ func TestMonitor_Execute(t *testing.T) { 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( func( @@ -613,10 +711,22 @@ func TestMonitor_Execute(t *testing.T) { ServerID: uuid.NewString(), ChannelGains: uuid.NewString(), ChannelLosses: uuid.NewString(), + Barbarians: true, ServerKey: "pl180", VersionCode: "pl", 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) @@ -659,10 +769,18 @@ func TestMonitor_Execute(t *testing.T) { GroupID: groups[4].ID, CreatedAt: time.Now(), }, + }, + groups[5].ID: { { ID: uuid.NewString(), - TribeID: tribes["de:200"][0].ID, - GroupID: groups[4].ID, + TribeID: tribes["de:de200"][0].ID, + GroupID: groups[5].ID, + CreatedAt: time.Now(), + }, + { + ID: uuid.NewString(), + TribeID: tribes["de:de200"][1].ID, + GroupID: groups[5].ID, CreatedAt: time.Now(), }, }, @@ -699,6 +817,18 @@ func TestMonitor_Execute(t *testing.T) { ChannelID: groups[3].ChannelGains, 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)) for _, n := range expectedNotifications {