saerro-go/cmd/ws/eventhandler/event_handler_test.go
2024-10-28 19:53:57 -07:00

135 lines
2.7 KiB
Go

package eventhandler
import (
"context"
"testing"
"time"
"github.com/genudine/saerro-go/cmd/ws/ingest"
"github.com/genudine/saerro-go/store/storemock"
"github.com/genudine/saerro-go/types"
)
func getEventHandlerTestShim(t *testing.T) (EventHandler, context.Context, *storemock.MockPlayerStore) {
t.Helper()
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
t.Cleanup(cancel)
ps := new(storemock.MockPlayerStore)
return EventHandler{
Ingest: &ingest.Ingest{
PlayerStore: ps,
},
}, ctx, ps
}
func TestHandleDeath(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "Death",
WorldID: 17,
ZoneID: 2,
CharacterID: "LyytisDoll",
LoadoutID: 3,
TeamID: types.NC,
AttackerCharacterID: "Lyyti",
AttackerLoadoutID: 3,
AttackerTeamID: types.TR,
}
p1 := types.PopEventFromESSEvent(event, false).ToPlayer()
p2 := types.PopEventFromESSEvent(event, true).ToPlayer()
ps.On("Insert", ctx, p1).Return(nil)
ps.On("Insert", ctx, p2).Return(nil)
eh.HandleDeath(ctx, event)
}
func TestHandleExperience(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "GainExperience",
WorldID: 17,
ZoneID: 2,
CharacterID: "LyytisDoll",
LoadoutID: 3,
TeamID: types.NC,
ExperienceID: 674,
}
p := types.PopEventFromESSEvent(event, false).ToPlayer()
ps.On("Insert", ctx, p).Return(nil)
eh.HandleExperience(ctx, event)
}
func TestHandleAnalytics(t *testing.T) {
eh, ctx, _ := getEventHandlerTestShim(t)
event := types.ESSEvent{
EventName: "GainExperience",
WorldID: 17,
ZoneID: 2,
CharacterID: "LyytisDoll",
LoadoutID: 3,
TeamID: types.NC,
ExperienceID: 674,
}
eh.HandleAnalytics(ctx, event)
}
func TestHandleEvent(t *testing.T) {
eh, ctx, ps := getEventHandlerTestShim(t)
events := []types.ESSEvent{
{
EventName: "Death",
WorldID: 17,
ZoneID: 2,
CharacterID: "LyytisDoll",
CharacterLoadoutID: 3,
TeamID: types.NC,
AttackerCharacterID: "Lyyti",
AttackerLoadoutID: 3,
AttackerTeamID: types.TR,
},
{
EventName: "GainExperience",
WorldID: 17,
ZoneID: 2,
CharacterID: "DollNC",
LoadoutID: 3,
TeamID: types.NC,
ExperienceID: 201,
},
{
EventName: "",
},
}
p1 := types.PopEventFromESSEvent(events[0], false).ToPlayer()
ps.On("Insert", ctx, p1).Return(nil).Once()
p2 := types.PopEventFromESSEvent(events[0], true).ToPlayer()
ps.On("Insert", ctx, p2).Return(nil).Once()
p3 := types.PopEventFromESSEvent(events[1], false).ToPlayer()
ps.On("Insert", ctx, p3).Return(nil).Once()
for _, event := range events {
eh.HandleEvent(ctx, event)
}
}