113 lines
2.6 KiB
Go
113 lines
2.6 KiB
Go
package store_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"git.sapphic.engineer/ps2.live/saerro-go/store"
|
|
"git.sapphic.engineer/ps2.live/saerro-go/types"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestPlayerMigrationClean(t *testing.T) {
|
|
ctx, db := mkEnv(t)
|
|
|
|
ps := store.NewPlayerStore(db)
|
|
|
|
isMigrated := ps.IsMigrated(ctx)
|
|
assert.True(t, isMigrated)
|
|
}
|
|
|
|
func TestPlayerMultipleStartups(t *testing.T) {
|
|
ctx, db := mkEnv(t)
|
|
|
|
ps1 := store.NewPlayerStore(db)
|
|
ps2 := store.NewPlayerStore(db)
|
|
|
|
isMigrated := ps2.IsMigrated(ctx)
|
|
assert.True(t, isMigrated)
|
|
|
|
assert.True(t, ps1.RanMigration)
|
|
assert.False(t, ps2.RanMigration)
|
|
}
|
|
|
|
func TestPlayerMigrationRerun(t *testing.T) {
|
|
ctx, db := mkEnv(t)
|
|
|
|
ps := store.NewPlayerStore(db)
|
|
ps.RunMigration(ctx, true)
|
|
|
|
isMigrated := ps.IsMigrated(ctx)
|
|
assert.True(t, isMigrated)
|
|
}
|
|
|
|
func TestPlayerInsertGetOne(t *testing.T) {
|
|
ctx, db := mkEnv(t)
|
|
ps := store.NewPlayerStore(db)
|
|
|
|
player := &types.Player{
|
|
CharacterID: "41666",
|
|
WorldID: 17,
|
|
FactionID: types.TR,
|
|
ZoneID: 4,
|
|
ClassName: "light_assault",
|
|
}
|
|
|
|
err := ps.Insert(ctx, player)
|
|
assert.NoError(t, err, "Insert failed")
|
|
|
|
p1, err := ps.GetOne(ctx, "41666")
|
|
assert.NoError(t, err, "GetOne failed")
|
|
assert.Equal(t, "light_assault", p1.ClassName)
|
|
|
|
time.Sleep(time.Second * 1)
|
|
|
|
player.ClassName = "combat_medic"
|
|
player.LastUpdated = time.Time{}
|
|
err = ps.Insert(ctx, player)
|
|
assert.NoError(t, err, "Insert failed")
|
|
|
|
p2, err := ps.GetOne(ctx, "41666")
|
|
assert.NoError(t, err, "GetOne failed")
|
|
assert.Equal(t, "combat_medic", p2.ClassName)
|
|
assert.NotEqual(t, p1.LastUpdated, p2.LastUpdated, "time did not update as expected")
|
|
}
|
|
|
|
func TestPlayerPrune(t *testing.T) {
|
|
ctx, db := mkEnv(t)
|
|
ps := store.NewPlayerStore(db)
|
|
|
|
prunedPlayer := &types.Player{
|
|
CharacterID: "20155",
|
|
WorldID: 17,
|
|
FactionID: types.NC,
|
|
ZoneID: 4,
|
|
ClassName: "light_assault",
|
|
LastUpdated: time.Now().Add(-time.Minute * 20),
|
|
}
|
|
survivingPlayer := &types.Player{
|
|
CharacterID: "41666",
|
|
WorldID: 17,
|
|
FactionID: types.TR,
|
|
ZoneID: 4,
|
|
ClassName: "light_assault",
|
|
LastUpdated: time.Now().Add(-time.Minute * 5),
|
|
}
|
|
|
|
err := ps.Insert(ctx, prunedPlayer)
|
|
assert.NoError(t, err, "Insert prunedPlayer failed")
|
|
|
|
err = ps.Insert(ctx, survivingPlayer)
|
|
assert.NoError(t, err, "Insert survivingPlayer failed")
|
|
|
|
removed, err := ps.Prune(ctx)
|
|
assert.NoError(t, err, "Prune failed")
|
|
assert.Equal(t, int64(1), removed, "Prune count incorrect")
|
|
|
|
_, err = ps.GetOne(ctx, prunedPlayer.CharacterID)
|
|
assert.Error(t, err, "GetOne prunedPlayer failed, as expected.")
|
|
|
|
_, err = ps.GetOne(ctx, survivingPlayer.CharacterID)
|
|
assert.NoError(t, err, "GetOne survivingPlayer failed")
|
|
}
|