fix: prioritize non-stock/non-decorated items

Changed schema lookups to prioritize non-stock/non-decorated item defindexes when names collide
Modified unit tests to include example (stock Flame Thrower)
This commit is contained in:
xenticore
2025-03-27 15:32:45 -04:00
parent b24cda98ad
commit 967a32fc83
3 changed files with 35 additions and 20 deletions

View File

@@ -2,24 +2,30 @@ import { describe, expect, test } from "bun:test";
import { ItemSchema, getItemIndexByName, getTradableStatusByDefindex, getTradableStatusByName} from '../src/content/schemaService'
const mockSchema: ItemSchema = {
'21': { name: 'Flame Thrower', tradable: false },
'208': { name: 'Flame Thrower', tradable: true },
'5021': { name: 'Mann Co. Supply Crate Key', tradable: true },
'15013': { name: 'Non-Tradable Item', tradable: false }
'15141': { name: 'Flame Thrower', tradable: true },
'69420': { name: 'Non-Tradable Item', tradable: false }
}
describe('Schema Service', () => {
test('getItemIndexByName returns correct defindex', () => {
expect(getItemIndexByName(mockSchema, 'Flame Thrower')).toBe(208)
expect(getItemIndexByName(mockSchema, 'Mann Co. Supply Crate Key')).toBe(5021)
expect(getItemIndexByName(mockSchema, 'Non-Existent Item')).toBeNull()
})
test('getTradableStatusByDefindex returns correct status', () => {
expect(getTradableStatusByDefindex(mockSchema, 208)).toBe(true)
expect(getTradableStatusByDefindex(mockSchema, 5021)).toBe(true)
expect(getTradableStatusByDefindex(mockSchema, 15013)).toBe(false)
expect(getTradableStatusByDefindex(mockSchema, 69420)).toBe(false)
expect(() => getTradableStatusByDefindex(mockSchema, 999)).toThrow()
})
test('getTradableStatusByName returns correct status', () => {
expect(getTradableStatusByName(mockSchema, 'Flame Thrower')).toBe(true)
expect(getTradableStatusByName(mockSchema, 'Mann Co. Supply Crate Key')).toBe(true)
expect(getTradableStatusByName(mockSchema, 'Non-Tradable Item')).toBe(false)
expect(getTradableStatusByName(mockSchema, 'Non-Existent Item')).toBe(true)