39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
|
import * as matchers from 'jest-extended'
|
||
|
expect.extend(matchers)
|
||
|
|
||
|
import { mocked } from '../../src/test-utils/mocked'
|
||
|
import Cache from './cache'
|
||
|
import getRequest from './getRequest'
|
||
|
|
||
|
jest.mock('./cache', () => ({
|
||
|
match: jest.fn(),
|
||
|
put: jest.fn(),
|
||
|
}))
|
||
|
|
||
|
test('should call Cache.match before calling getData when request is not cached', async () => {
|
||
|
const url = 'https://example.com'
|
||
|
const getData = jest.fn().mockResolvedValueOnce({
|
||
|
title: 'test',
|
||
|
image: 'testImage',
|
||
|
url: 'testUrl',
|
||
|
})
|
||
|
await getRequest(Promise.resolve(new Response()), url, getData)
|
||
|
expect(Cache.match).toHaveBeenCalledWith(url)
|
||
|
expect(getData).toHaveBeenCalled()
|
||
|
expect(Cache.match).toHaveBeenCalledBefore(getData)
|
||
|
expect(Cache.put).toHaveBeenCalledAfter(getData)
|
||
|
})
|
||
|
|
||
|
test('getData should not be called when request is cached', async () => {
|
||
|
const url = 'https://example.com'
|
||
|
mocked(Cache.match).mockResolvedValueOnce({
|
||
|
title: 'test',
|
||
|
image: 'testImage',
|
||
|
url: 'testUrl',
|
||
|
})
|
||
|
const getData = jest.fn()
|
||
|
await getRequest(Promise.resolve(new Response()), url, getData)
|
||
|
expect(Cache.match).toHaveBeenCalledWith(url)
|
||
|
expect(getData).not.toHaveBeenCalled()
|
||
|
})
|