refactor: fetchPrice now expects an SKU string

This commit is contained in:
xenticore
2025-03-28 23:35:39 -04:00
parent d1c5083425
commit 77a831b89e
3 changed files with 7 additions and 8 deletions

View File

@@ -49,7 +49,7 @@ describe('Price Service', () => {
test('fetchPrice returns cached data if available and not expired', async () => { test('fetchPrice returns cached data if available and not expired', async () => {
(getStorageValue as jest.Mock).mockResolvedValue(mockCachedData) (getStorageValue as jest.Mock).mockResolvedValue(mockCachedData)
const result = await fetchPrice(mockToken, mockDefIndex, mockQuality) const result = await fetchPrice(mockToken, mockDefIndex + ";" + mockQuality)
expect(getStorageValue).toHaveBeenCalledWith(expect.stringContaining(mockSku), null) expect(getStorageValue).toHaveBeenCalledWith(expect.stringContaining(mockSku), null)
expect(result).toEqual(mockCachedData) expect(result).toEqual(mockCachedData)
@@ -60,7 +60,7 @@ describe('Price Service', () => {
(getStorageValue as jest.Mock).mockResolvedValue(expiredCache); (getStorageValue as jest.Mock).mockResolvedValue(expiredCache);
(priceUsingPricesTF as jest.Mock).mockResolvedValue(mockPriceResponse) (priceUsingPricesTF as jest.Mock).mockResolvedValue(mockPriceResponse)
const result = await fetchPrice(mockToken, mockDefIndex, mockQuality) const result = await fetchPrice(mockToken, mockDefIndex + ";" + mockQuality)
expect(priceUsingPricesTF).toHaveBeenCalledWith(mockToken, `${mockDefIndex};${mockQuality}`) expect(priceUsingPricesTF).toHaveBeenCalledWith(mockToken, `${mockDefIndex};${mockQuality}`)
expect(setStorageValue).toHaveBeenCalled() expect(setStorageValue).toHaveBeenCalled()
@@ -69,7 +69,7 @@ describe('Price Service', () => {
}) })
test('fetchPrice rejects with 401 when no token provided', async () => { test('fetchPrice rejects with 401 when no token provided', async () => {
await expect(fetchPrice('', mockDefIndex, mockQuality)).rejects.toBe(401) await expect(fetchPrice('', mockDefIndex + ";" + mockQuality)).rejects.toBe(401)
}) })
test('fetchPrice handles pricing API errors', async () => { test('fetchPrice handles pricing API errors', async () => {
@@ -77,7 +77,7 @@ describe('Price Service', () => {
(priceUsingPricesTF as jest.Mock).mockRejectedValue(testError); (priceUsingPricesTF as jest.Mock).mockRejectedValue(testError);
(getStorageValue as jest.Mock).mockResolvedValue(null) (getStorageValue as jest.Mock).mockResolvedValue(null)
await expect(fetchPrice(mockToken, mockDefIndex, mockQuality)).rejects.toBe(testError) await expect(fetchPrice(mockToken, mockDefIndex + ";" + mockQuality)).rejects.toBe(testError)
}) })
test('fetchKeyPrice uses correct parameters', async () => { test('fetchKeyPrice uses correct parameters', async () => {

View File

@@ -206,7 +206,7 @@ async function inject() {
var data: ItemPriceData | null var data: ItemPriceData | null
try { try {
data = await fetchPrice(token, itemIndex, quality, currentTime); data = await fetchPrice(token, itemIndex + ";" + quality, currentTime);
updateTime = new Date(data.update) updateTime = new Date(data.update)
} catch { } catch {
log(`${qualifiedName} is unpriced or unavailable, skipping...`) log(`${qualifiedName} is unpriced or unavailable, skipping...`)

View File

@@ -30,7 +30,7 @@ export class ItemPriceData {
export async function fetchKeyPrice(token: string) { export async function fetchKeyPrice(token: string) {
return fetchPrice(token, defindex_key, 6, new Date(), 86400000) return fetchPrice(token, `${defindex_key};6`, new Date(), 86400000)
} }
/** /**
@@ -39,9 +39,8 @@ export async function fetchKeyPrice(token: string) {
* @param update Date retrieved. * @param update Date retrieved.
* @param ttl Time to cache results in milliseconds. 30 minutes by default. * @param ttl Time to cache results in milliseconds. 30 minutes by default.
*/ */
export async function fetchPrice(token: string, defIndex: number, quality: number, update: Date = new Date(), ttl: number = 30 * 60 * 1000): Promise<ItemPriceData> { export async function fetchPrice(token: string, sku: string, update: Date = new Date(), ttl: number = 30 * 60 * 1000): Promise<ItemPriceData> {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
const sku = defIndex.toString() + ";" + quality.toString();
var data: ItemPriceData | null var data: ItemPriceData | null
const cached = await getStorageValue(storage_priceprefix + sku, null) const cached = await getStorageValue(storage_priceprefix + sku, null)