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
}
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 {

View File

@ -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 {