package main import ( "testing" 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]) }) } // TestCache disabled - cache methods not implemented in DB interface // 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) // }) // }