147 lines
3.1 KiB
Go
147 lines
3.1 KiB
Go
package eventhandler
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.sapphic.engineer/ps2.live/saerro-go/cmd/ws/ingest"
|
|
"git.sapphic.engineer/ps2.live/saerro-go/store/storemock"
|
|
"git.sapphic.engineer/ps2.live/saerro-go/types"
|
|
)
|
|
|
|
func getEventHandlerTestShim(t *testing.T) (EventHandler, context.Context, *storemock.MockPlayerStore, *storemock.MockVehicleStore) {
|
|
t.Helper()
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second*15)
|
|
t.Cleanup(cancel)
|
|
|
|
ps := new(storemock.MockPlayerStore)
|
|
vs := new(storemock.MockVehicleStore)
|
|
|
|
return EventHandler{
|
|
Ingest: &ingest.Ingest{
|
|
PlayerStore: ps,
|
|
VehicleStore: vs,
|
|
},
|
|
}, ctx, ps, vs
|
|
}
|
|
|
|
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, vs := 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)
|
|
v := p.ToVehicle()
|
|
v.VehicleName = "ant" // exp event translation
|
|
ps.On("Insert", ctx, p.ToPlayer()).Return(nil)
|
|
vs.On("Insert", ctx, v).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, vs := 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()
|
|
|
|
e3 := types.PopEventFromESSEvent(events[1], false)
|
|
p3 := e3.ToPlayer()
|
|
ps.On("Insert", ctx, p3).Return(nil).Once()
|
|
|
|
v3 := types.PopEventFromESSEvent(events[1], false).ToVehicle()
|
|
v3.VehicleName = "galaxy" // exp event translation
|
|
vs.On("Insert", ctx, v3).Return(nil).Once()
|
|
|
|
for _, event := range events {
|
|
eh.HandleEvent(ctx, event)
|
|
}
|
|
}
|