Files
zkill-susser/db_test.go
2026-01-06 16:05:44 +01:00

129 lines
4.1 KiB
Go

package main
import (
"testing"
"time"
logger "git.site.quack-lab.dev/dave/cylogger"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestExpandGroupsIntoItemTypeIds(t *testing.T) {
t.Run("Expand 325", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
expected := []int64{3536, 11355, 11357, 11359, 16433, 16435, 16437, 16439, 16441, 16443, 16445, 16447, 16449, 16451, 16453, 16455, 18981, 18983, 18985, 18987, 18989, 18991, 19047, 19049, 19051, 19053, 19055, 19057, 22947, 22949, 22951, 23414, 23416, 24569, 26912, 26913, 26914, 32469, 41463, 41464, 41465, 41466, 41467, 41468, 84985, 84986, 84987, 84988}
groupID := int64(325)
types, err := db.ExpandGroupsIntoItemTypeIds([]int64{groupID})
require.NoError(t, err)
assert.ElementsMatch(t, expected, types)
})
t.Run("Expand 325 and 4", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
expected := []int64{3536, 11355, 11357, 11359, 16433, 16435, 16437, 16439, 16441, 16443, 16445, 16447, 16449, 16451, 16453, 16455, 18981, 18983, 18985, 18987, 18989, 18991, 19047, 19049, 19051, 19053, 19055, 19057, 22947, 22949, 22951, 23414, 23416, 24569, 26912, 26913, 26914, 32469, 41463, 41464, 41465, 41466, 41467, 41468, 84985, 84986, 84987, 84988, 4} // 4 -> 4 (1 item)
groupIDs := []int64{325, 4}
types, err := db.ExpandGroupsIntoItemTypeIds(groupIDs)
require.NoError(t, err)
assert.ElementsMatch(t, expected, types)
})
}
func TestGetModuleSlots(t *testing.T) {
logger.Init(logger.LevelDump)
t.Run("Get slots for 11357 -> High", func(t *testing.T) {
// Medium Remote Armor Repairer I
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{11357})
require.NoError(t, err)
assert.Equal(t, ModuleSlotHigh, slots[11357])
})
t.Run("Get slots for 4391 -> Med", func(t *testing.T) {
// Large Ancillary Shield Booster
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{4391})
require.NoError(t, err)
assert.Equal(t, ModuleSlotMid, slots[4391])
})
t.Run("Get slots for 4393-> Low", func(t *testing.T) {
// Drone Damage Amplifier I
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{4393})
require.NoError(t, err)
assert.Equal(t, ModuleSlotLow, slots[4393])
})
t.Run("Get slots for 25908 -> Rig", func(t *testing.T) {
// Large Drone Control Range Augmentor I
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{25908})
require.NoError(t, err)
assert.Equal(t, ModuleSlotRig, slots[25908])
})
t.Run("Get slots for all 3 combined -> High, Mid, Low, Rig", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{11357, 4391, 4393, 25908})
require.NoError(t, err)
assert.Equal(t, ModuleSlotHigh, slots[11357])
assert.Equal(t, ModuleSlotMid, slots[4391])
assert.Equal(t, ModuleSlotLow, slots[4393])
assert.Equal(t, ModuleSlotRig, slots[25908])
assert.Equal(t, 4, len(slots))
})
t.Run("Get slots for 2454 -> Drone", func(t *testing.T) {
// Hobgoblin I
db, err := GetDB()
require.NoError(t, err)
slots, err := db.GetModuleSlots([]int64{2454})
require.NoError(t, err)
assert.Equal(t, ModuleSlotDrone, slots[2454])
})
}
func TestCache(t *testing.T) {
t.Run("Get non existent", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
_, err = db.CacheGet("test")
assert.ErrorIs(t, err, ErrCacheMiss)
})
t.Run("Set and get", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
err = db.CacheSet("test", []byte("test"))
require.NoError(t, err)
cache, err := db.CacheGet("test")
require.NoError(t, err)
assert.Equal(t, []byte("test"), cache)
})
t.Run("Test clean", func(t *testing.T) {
db, err := GetDB()
require.NoError(t, err)
err = db.CacheSet("test", []byte("test"))
require.NoError(t, err)
expiredTime := time.Now().Add(-4 * 24 * time.Hour)
db.Get().
Model(&CacheEntry{}).
Update("created_at", expiredTime)
err = db.CacheClean()
require.NoError(t, err)
_, err = db.CacheGet("test")
assert.ErrorIs(t, err, ErrCacheMiss)
})
}