You've already forked tf2wikipricing
refactor: fetchPrice now expects an SKU string
This commit is contained in:
@@ -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 () => {
|
||||||
|
|||||||
@@ -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...`)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user