refactor(service-worker): use `async/await` in SW config tests (#33903)

PR Close #33903
This commit is contained in:
George Kalpakas 2019-11-18 22:25:16 +02:00 committed by Alex Rickabaugh
parent bf1bcd1e08
commit 4d03ec0e85
1 changed files with 78 additions and 84 deletions

View File

@ -12,7 +12,7 @@ import {MockFilesystem} from '../testing/mock';
describe('Generator', () => { describe('Generator', () => {
beforeEach(() => spyOn(Date, 'now').and.returnValue(1234567890123)); beforeEach(() => spyOn(Date, 'now').and.returnValue(1234567890123));
it('generates a correct config', done => { it('generates a correct config', async() => {
const fs = new MockFilesystem({ const fs = new MockFilesystem({
'/index.html': 'This is a test', '/index.html': 'This is a test',
'/main.css': 'This is a CSS file', '/main.css': 'This is a CSS file',
@ -23,7 +23,7 @@ describe('Generator', () => {
'/ignored/x.html': 'should be ignored', '/ignored/x.html': 'should be ignored',
}); });
const gen = new Generator(fs, '/test'); const gen = new Generator(fs, '/test');
const res = gen.process({ const config = await gen.process({
appData: { appData: {
test: true, test: true,
}, },
@ -41,8 +41,8 @@ describe('Generator', () => {
'/absolute/**', '/absolute/**',
'/some/url?with+escaped+chars', '/some/url?with+escaped+chars',
'relative/*.txt', 'relative/*.txt',
] ],
} },
}], }],
dataGroups: [{ dataGroups: [{
name: 'other', name: 'other',
@ -55,7 +55,7 @@ describe('Generator', () => {
maxSize: 100, maxSize: 100,
maxAge: '3d', maxAge: '3d',
timeout: '1m', timeout: '1m',
} },
}], }],
navigationUrls: [ navigationUrls: [
'/included/absolute/**', '/included/absolute/**',
@ -67,92 +67,86 @@ describe('Generator', () => {
'!http://example.com/excluded', '!http://example.com/excluded',
], ],
}); });
res.then(config => {
expect(config).toEqual({ expect(config).toEqual({
configVersion: 1, configVersion: 1,
timestamp: 1234567890123, timestamp: 1234567890123,
appData: { appData: {
test: true, test: true,
}, },
index: '/test/index.html', index: '/test/index.html',
assetGroups: [{ assetGroups: [{
name: 'test', name: 'test',
installMode: 'prefetch', installMode: 'prefetch',
updateMode: 'prefetch', updateMode: 'prefetch',
urls: [ urls: [
'/test/foo/test.html', '/test/foo/test.html',
'/test/index.html', '/test/index.html',
'/test/main.js', '/test/main.js',
'/test/main.ts', '/test/main.ts',
'/test/test.txt', '/test/test.txt',
], ],
patterns: [ patterns: [
'\\/absolute\\/.*', '\\/absolute\\/.*',
'\\/some\\/url\\?with\\+escaped\\+chars', '\\/some\\/url\\?with\\+escaped\\+chars',
'\\/test\\/relative\\/[^/]*\\.txt', '\\/test\\/relative\\/[^/]*\\.txt',
] ],
}], }],
dataGroups: [{ dataGroups: [{
name: 'other', name: 'other',
patterns: [ patterns: [
'\\/api\\/.*', '\\/api\\/.*',
'\\/test\\/relapi\\/.*', '\\/test\\/relapi\\/.*',
'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars', 'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars',
], ],
strategy: 'performance', strategy: 'performance',
maxSize: 100, maxSize: 100,
maxAge: 259200000, maxAge: 259200000,
timeoutMs: 60000, timeoutMs: 60000,
version: 1, version: 1,
}], }],
navigationUrls: [ navigationUrls: [
{positive: true, regex: '^\\/included\\/absolute\\/.*$'}, {positive: true, regex: '^\\/included\\/absolute\\/.*$'},
{positive: false, regex: '^\\/excluded\\/absolute\\/.*$'}, {positive: false, regex: '^\\/excluded\\/absolute\\/.*$'},
{positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'}, {positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'},
{positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'}, {positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'},
{positive: false, regex: '^\\/api\\/[^/][^/]*$'}, {positive: false, regex: '^\\/api\\/[^/][^/]*$'},
{positive: true, regex: '^http:\\/\\/example\\.com\\/included$'}, {positive: true, regex: '^http:\\/\\/example\\.com\\/included$'},
{positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'}, {positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'},
], ],
hashTable: { hashTable: {
'/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643', '/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643',
'/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19', '/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19',
'/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c', '/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c',
'/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035', '/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035',
'/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643' '/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643',
} },
}); });
done();
})
.catch(err => done.fail(err));
}); });
it('uses default `navigationUrls` if not provided', done => { it('uses default `navigationUrls` if not provided', async() => {
const fs = new MockFilesystem({ const fs = new MockFilesystem({
'/index.html': 'This is a test', '/index.html': 'This is a test',
}); });
const gen = new Generator(fs, '/test'); const gen = new Generator(fs, '/test');
const res = gen.process({ const config = await gen.process({
index: '/index.html', index: '/index.html',
}); });
res.then(config => {
expect(config).toEqual({ expect(config).toEqual({
configVersion: 1, configVersion: 1,
timestamp: 1234567890123, timestamp: 1234567890123,
appData: undefined, appData: undefined,
index: '/test/index.html', index: '/test/index.html',
assetGroups: [], assetGroups: [],
dataGroups: [], dataGroups: [],
navigationUrls: [ navigationUrls: [
{positive: true, regex: '^\\/.*$'}, {positive: true, regex: '^\\/.*$'},
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'}, {positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'},
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'}, {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'},
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'}, {positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'},
], ],
hashTable: {} hashTable: {},
}); });
done();
})
.catch(err => done.fail(err));
}); });
}); });