UNPKG

react-http-fetch

Version:

An http library for React JS built on top of native JS fetch

90 lines (89 loc) 5.25 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var http_cache_fixture_1 = require("./fixtures/http-cache.fixture"); var http_request_fixture_1 = require("./fixtures/http-request.fixture"); describe('http-fetch', function () { afterEach(function () { jest.useRealTimers(); }); beforeEach(function () { jest.useFakeTimers(); jest.spyOn(global, 'setTimeout'); }); test('should return undefined if no cached entry is found for the given identifier', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(); var cachedEntry = httpCache.get(httpRequest); expect(cachedEntry).toBeUndefined(); }); test('should return the cached entry corresponding to the provided identifier', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000 })); var cachedResponse = { name: 'Phelony' }; httpCache.put(httpRequest, cachedResponse); var expiredCachedResponse = httpCache.get(httpRequest); expect(expiredCachedResponse).toEqual(cachedResponse); expect(setTimeout).toHaveBeenCalledTimes(1); expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 6000); }); test('should remove the cached entry once expired', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000 })); var httpResponse = { name: 'Phelony' }; httpCache.put(httpRequest, httpResponse); var cachedResponse = httpCache.get(httpRequest); expect(cachedResponse).toEqual(httpResponse); expect(setTimeout).toHaveBeenCalledTimes(1); expect(setTimeout).toHaveBeenLastCalledWith(expect.any(Function), 6000); jest.runOnlyPendingTimers(); var expiredCachedResponse = httpCache.get(httpRequest); expect(expiredCachedResponse).toBeUndefined(); }); test('should tell if a cached response for a given request is expired', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000 })); httpCache.put(httpRequest, {}); expect(httpCache.isExpired(httpRequest)).toBe(false); jest.runOnlyPendingTimers(); expect(httpCache.isExpired(httpRequest)).toBe(true); }); test('should tell if there is a cached response for the given request', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000 })); httpCache.put(httpRequest, {}); expect(httpCache.has(httpRequest)).toBe(true); jest.runOnlyPendingTimers(); expect(httpCache.has(httpRequest)).toBe(false); }); test('should prune the cache by removing any expired entry', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var httpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000 })); httpCache.put(httpRequest, {}); expect(httpCache.has(httpRequest)).toBe(true); jest.runOnlyPendingTimers(); expect(httpCache.has(httpRequest)).toBe(false); }); test('should flush the cache by removing all entries', function () { var httpCache = http_cache_fixture_1.HttpCacheFixture.create(); var firstHttpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000, relativeUrl: 'posts' })); var secondHttpRequest = http_request_fixture_1.HttpRequestFixture.create(__assign(__assign({}, http_request_fixture_1.HttpRequestFixture.defaultOptions), { maxAge: 6000, relativeUrl: 'comments' })); httpCache.put(firstHttpRequest, {}); httpCache.put(secondHttpRequest, {}); expect(httpCache.has(firstHttpRequest)).toBe(true); expect(httpCache.has(secondHttpRequest)).toBe(true); httpCache.flush(); expect(httpCache.has(firstHttpRequest)).toBe(false); expect(httpCache.has(secondHttpRequest)).toBe(false); }); });