kopia lustrzana https://gitlab.com/rysiekpl/libresilient
64 wiersze
2.1 KiB
JavaScript
64 wiersze
2.1 KiB
JavaScript
const makeServiceWorkerEnv = require('service-worker-mock');
|
|
//global.fetch = require('service-worker-mock/fetch');
|
|
|
|
global.fetch = require('node-fetch');
|
|
jest.mock('node-fetch')
|
|
|
|
global.fetch.mockImplementation((url, init) => {
|
|
const response = new Response(
|
|
new Blob(
|
|
[JSON.stringify({ test: "success" })],
|
|
{type: "application/json"}
|
|
),
|
|
{
|
|
status: 200,
|
|
statusText: "OK",
|
|
headers: {
|
|
'ETag': 'TestingETagHeader'
|
|
},
|
|
url: url
|
|
});
|
|
return Promise.resolve(response);
|
|
});
|
|
|
|
describe("service-worker", () => {
|
|
beforeEach(() => {
|
|
Object.assign(global, makeServiceWorkerEnv());
|
|
global.self = new ServiceWorkerGlobalScope()
|
|
jest.resetModules();
|
|
self.LibResilientPlugins = new Array()
|
|
self.LibResilientConfig = {
|
|
plugins: {
|
|
'fetch': {},
|
|
'cache':{}
|
|
},
|
|
loggedComponents: [
|
|
'service-worker', 'cache', 'fetch'
|
|
]
|
|
}
|
|
})
|
|
|
|
test("fetching content should work", async () => {
|
|
require("../plugins/fetch.js");
|
|
require("../plugins/cache.js");
|
|
require("../service-worker.js");
|
|
await self.trigger('install')
|
|
await self.trigger('activate')
|
|
var response = await self.trigger('fetch', new Request('/test.json'))
|
|
expect(await response.json()).toEqual({ test: "success" })
|
|
expect (await caches.open('v1').then((cache)=>{
|
|
return cache.keys()
|
|
}).then((keys)=>{
|
|
return keys[0].url
|
|
})).toEqual(self.location.origin + '/test.json')
|
|
expect (await caches.open('v1').then((cache)=>{
|
|
return cache.match(self.location.origin + '/test.json')
|
|
}).then((response)=>{
|
|
return response.json()
|
|
}).then((json)=>{
|
|
return json
|
|
})).toEqual({ test: "success" })
|
|
});
|
|
|
|
});
|