saerro-go/store/vehicle_test.go
2024-11-13 21:12:33 -08:00

114 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 TestVehicleMigrationClean(t *testing.T) {
ctx, db := mkEnv(t)
ps := store.NewVehicleStore(db)
isMigrated := ps.IsMigrated(ctx)
assert.True(t, isMigrated)
}
func TestVehicleMultipleStartups(t *testing.T) {
ctx, db := mkEnv(t)
ps1 := store.NewVehicleStore(db)
ps2 := store.NewVehicleStore(db)
isMigrated := ps2.IsMigrated(ctx)
assert.True(t, isMigrated)
assert.True(t, ps1.RanMigration)
assert.False(t, ps2.RanMigration)
}
func TestVehicleMigrationRerun(t *testing.T) {
ctx, db := mkEnv(t)
ps := store.NewVehicleStore(db)
ps.RunMigration(ctx, true)
isMigrated := ps.IsMigrated(ctx)
assert.True(t, isMigrated)
}
func TestVehicleInsertGetOne(t *testing.T) {
ctx, db := mkEnv(t)
ps := store.NewVehicleStore(db)
player := &types.Vehicle{
CharacterID: "41666",
WorldID: 17,
FactionID: types.TR,
ZoneID: 4,
VehicleName: "harasser",
}
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, "harasser", p1.VehicleName)
time.Sleep(time.Second * 1)
player.VehicleName = "vanguard"
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, "vanguard", p2.VehicleName)
assert.NotEqual(t, p1.LastUpdated, p2.LastUpdated, "time did not update as expected")
}
func TestVehiclePrune(t *testing.T) {
ctx, db := mkEnv(t)
ps := store.NewVehicleStore(db)
prunedPlayer := &types.Vehicle{
CharacterID: "20155",
WorldID: 17,
FactionID: types.NC,
ZoneID: 4,
VehicleName: "harasser",
LastUpdated: time.Now().Add(-time.Minute * 20),
}
survivingPlayer := &types.Vehicle{
CharacterID: "41666",
WorldID: 17,
FactionID: types.TR,
ZoneID: 4,
VehicleName: "harasser",
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")
}