test(service-worker): run the remaining service-worker tests under bazel (#27386)
PR Close #27386
This commit is contained in:
parent
fba9fa2302
commit
194f1f084f
23
packages/service-worker/config/test/BUILD.bazel
Normal file
23
packages/service-worker/config/test/BUILD.bazel
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
load("//tools:defaults.bzl", "jasmine_node_test", "ts_library")
|
||||||
|
|
||||||
|
ts_library(
|
||||||
|
name = "test_lib",
|
||||||
|
testonly = True,
|
||||||
|
srcs = glob(
|
||||||
|
["**/*.ts"],
|
||||||
|
),
|
||||||
|
deps = [
|
||||||
|
"//packages/service-worker/config",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
jasmine_node_test(
|
||||||
|
name = "test",
|
||||||
|
bootstrap = ["angular/tools/testing/init_node_spec.js"],
|
||||||
|
deps = [
|
||||||
|
":test_lib",
|
||||||
|
"//packages/service-worker/config",
|
||||||
|
"//packages/service-worker/config/testing",
|
||||||
|
"//tools/testing:node",
|
||||||
|
],
|
||||||
|
)
|
@ -9,150 +9,148 @@
|
|||||||
import {Generator} from '../src/generator';
|
import {Generator} from '../src/generator';
|
||||||
import {MockFilesystem} from '../testing/mock';
|
import {MockFilesystem} from '../testing/mock';
|
||||||
|
|
||||||
{
|
describe('Generator', () => {
|
||||||
describe('Generator', () => {
|
it('generates a correct config', done => {
|
||||||
it('generates a correct config', done => {
|
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',
|
'/main.js': 'This is a JS file',
|
||||||
'/main.js': 'This is a JS file',
|
'/main.ts': 'This is a TS file',
|
||||||
'/main.ts': 'This is a TS file',
|
'/test.txt': 'Another test',
|
||||||
'/test.txt': 'Another test',
|
'/foo/test.html': 'Another test',
|
||||||
'/foo/test.html': 'Another test',
|
'/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 res = gen.process({
|
appData: {
|
||||||
appData: {
|
test: true,
|
||||||
test: true,
|
},
|
||||||
},
|
index: '/index.html',
|
||||||
index: '/index.html',
|
assetGroups: [{
|
||||||
assetGroups: [{
|
name: 'test',
|
||||||
name: 'test',
|
resources: {
|
||||||
resources: {
|
files: [
|
||||||
files: [
|
'/**/*.html',
|
||||||
'/**/*.html',
|
'/**/*.?s',
|
||||||
'/**/*.?s',
|
'!/ignored/**',
|
||||||
'!/ignored/**',
|
|
||||||
],
|
|
||||||
versionedFiles: [
|
|
||||||
'/**/*.txt',
|
|
||||||
],
|
|
||||||
urls: [
|
|
||||||
'/absolute/**',
|
|
||||||
'/some/url?with+escaped+chars',
|
|
||||||
'relative/*.txt',
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}],
|
|
||||||
dataGroups: [{
|
|
||||||
name: 'other',
|
|
||||||
urls: [
|
|
||||||
'/api/**',
|
|
||||||
'relapi/**',
|
|
||||||
'https://example.com/**/*?with+escaped+chars',
|
|
||||||
],
|
],
|
||||||
cacheConfig: {
|
versionedFiles: [
|
||||||
maxSize: 100,
|
'/**/*.txt',
|
||||||
maxAge: '3d',
|
],
|
||||||
timeout: '1m',
|
urls: [
|
||||||
}
|
'/absolute/**',
|
||||||
}],
|
'/some/url?with+escaped+chars',
|
||||||
navigationUrls: [
|
'relative/*.txt',
|
||||||
'/included/absolute/**',
|
]
|
||||||
'!/excluded/absolute/**',
|
}
|
||||||
'/included/some/url/with+escaped+chars',
|
}],
|
||||||
'!excluded/relative/*.txt',
|
dataGroups: [{
|
||||||
'!/api/?*',
|
name: 'other',
|
||||||
'http://example.com/included',
|
urls: [
|
||||||
'!http://example.com/excluded',
|
'/api/**',
|
||||||
|
'relapi/**',
|
||||||
|
'https://example.com/**/*?with+escaped+chars',
|
||||||
],
|
],
|
||||||
});
|
cacheConfig: {
|
||||||
res.then(config => {
|
maxSize: 100,
|
||||||
expect(config).toEqual({
|
maxAge: '3d',
|
||||||
configVersion: 1,
|
timeout: '1m',
|
||||||
appData: {
|
}
|
||||||
test: true,
|
}],
|
||||||
},
|
navigationUrls: [
|
||||||
index: '/test/index.html',
|
'/included/absolute/**',
|
||||||
assetGroups: [{
|
'!/excluded/absolute/**',
|
||||||
name: 'test',
|
'/included/some/url/with+escaped+chars',
|
||||||
installMode: 'prefetch',
|
'!excluded/relative/*.txt',
|
||||||
updateMode: 'prefetch',
|
'!/api/?*',
|
||||||
urls: [
|
'http://example.com/included',
|
||||||
'/test/foo/test.html',
|
'!http://example.com/excluded',
|
||||||
'/test/index.html',
|
],
|
||||||
'/test/main.js',
|
|
||||||
'/test/main.ts',
|
|
||||||
'/test/test.txt',
|
|
||||||
],
|
|
||||||
patterns: [
|
|
||||||
'\\/absolute\\/.*',
|
|
||||||
'\\/some\\/url\\?with\\+escaped\\+chars',
|
|
||||||
'\\/test\\/relative\\/[^/]*\\.txt',
|
|
||||||
]
|
|
||||||
}],
|
|
||||||
dataGroups: [{
|
|
||||||
name: 'other',
|
|
||||||
patterns: [
|
|
||||||
'\\/api\\/.*',
|
|
||||||
'\\/test\\/relapi\\/.*',
|
|
||||||
'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars',
|
|
||||||
],
|
|
||||||
strategy: 'performance',
|
|
||||||
maxSize: 100,
|
|
||||||
maxAge: 259200000,
|
|
||||||
timeoutMs: 60000,
|
|
||||||
version: 1,
|
|
||||||
}],
|
|
||||||
navigationUrls: [
|
|
||||||
{positive: true, regex: '^\\/included\\/absolute\\/.*$'},
|
|
||||||
{positive: false, regex: '^\\/excluded\\/absolute\\/.*$'},
|
|
||||||
{positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'},
|
|
||||||
{positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'},
|
|
||||||
{positive: false, regex: '^\\/api\\/[^/][^/]*$'},
|
|
||||||
{positive: true, regex: '^http:\\/\\/example\\.com\\/included$'},
|
|
||||||
{positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'},
|
|
||||||
],
|
|
||||||
hashTable: {
|
|
||||||
'/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643',
|
|
||||||
'/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19',
|
|
||||||
'/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c',
|
|
||||||
'/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035',
|
|
||||||
'/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
done();
|
|
||||||
})
|
|
||||||
.catch(err => done.fail(err));
|
|
||||||
});
|
});
|
||||||
|
res.then(config => {
|
||||||
it('uses default `navigationUrls` if not provided', done => {
|
expect(config).toEqual({
|
||||||
const fs = new MockFilesystem({
|
configVersion: 1,
|
||||||
'/index.html': 'This is a test',
|
appData: {
|
||||||
});
|
test: true,
|
||||||
const gen = new Generator(fs, '/test');
|
},
|
||||||
const res = gen.process({
|
index: '/test/index.html',
|
||||||
index: '/index.html',
|
assetGroups: [{
|
||||||
});
|
name: 'test',
|
||||||
res.then(config => {
|
installMode: 'prefetch',
|
||||||
expect(config).toEqual({
|
updateMode: 'prefetch',
|
||||||
configVersion: 1,
|
urls: [
|
||||||
appData: undefined,
|
'/test/foo/test.html',
|
||||||
index: '/test/index.html',
|
'/test/index.html',
|
||||||
assetGroups: [],
|
'/test/main.js',
|
||||||
dataGroups: [],
|
'/test/main.ts',
|
||||||
navigationUrls: [
|
'/test/test.txt',
|
||||||
{positive: true, regex: '^\\/.*$'},
|
|
||||||
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'},
|
|
||||||
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'},
|
|
||||||
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'},
|
|
||||||
],
|
],
|
||||||
hashTable: {}
|
patterns: [
|
||||||
});
|
'\\/absolute\\/.*',
|
||||||
done();
|
'\\/some\\/url\\?with\\+escaped\\+chars',
|
||||||
})
|
'\\/test\\/relative\\/[^/]*\\.txt',
|
||||||
.catch(err => done.fail(err));
|
]
|
||||||
});
|
}],
|
||||||
|
dataGroups: [{
|
||||||
|
name: 'other',
|
||||||
|
patterns: [
|
||||||
|
'\\/api\\/.*',
|
||||||
|
'\\/test\\/relapi\\/.*',
|
||||||
|
'https:\\/\\/example\\.com\\/(?:.+\\/)?[^/]*\\?with\\+escaped\\+chars',
|
||||||
|
],
|
||||||
|
strategy: 'performance',
|
||||||
|
maxSize: 100,
|
||||||
|
maxAge: 259200000,
|
||||||
|
timeoutMs: 60000,
|
||||||
|
version: 1,
|
||||||
|
}],
|
||||||
|
navigationUrls: [
|
||||||
|
{positive: true, regex: '^\\/included\\/absolute\\/.*$'},
|
||||||
|
{positive: false, regex: '^\\/excluded\\/absolute\\/.*$'},
|
||||||
|
{positive: true, regex: '^\\/included\\/some\\/url\\/with\\+escaped\\+chars$'},
|
||||||
|
{positive: false, regex: '^\\/test\\/excluded\\/relative\\/[^/]*\\.txt$'},
|
||||||
|
{positive: false, regex: '^\\/api\\/[^/][^/]*$'},
|
||||||
|
{positive: true, regex: '^http:\\/\\/example\\.com\\/included$'},
|
||||||
|
{positive: false, regex: '^http:\\/\\/example\\.com\\/excluded$'},
|
||||||
|
],
|
||||||
|
hashTable: {
|
||||||
|
'/test/foo/test.html': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643',
|
||||||
|
'/test/index.html': 'a54d88e06612d820bc3be72877c74f257b561b19',
|
||||||
|
'/test/main.js': '41347a66676cdc0516934c76d9d13010df420f2c',
|
||||||
|
'/test/main.ts': '7d333e31f0bfc4f8152732bb211a93629484c035',
|
||||||
|
'/test/test.txt': '18f6f8eb7b1c23d2bb61bff028b83d867a9e4643'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(err => done.fail(err));
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
it('uses default `navigationUrls` if not provided', done => {
|
||||||
|
const fs = new MockFilesystem({
|
||||||
|
'/index.html': 'This is a test',
|
||||||
|
});
|
||||||
|
const gen = new Generator(fs, '/test');
|
||||||
|
const res = gen.process({
|
||||||
|
index: '/index.html',
|
||||||
|
});
|
||||||
|
res.then(config => {
|
||||||
|
expect(config).toEqual({
|
||||||
|
configVersion: 1,
|
||||||
|
appData: undefined,
|
||||||
|
index: '/test/index.html',
|
||||||
|
assetGroups: [],
|
||||||
|
dataGroups: [],
|
||||||
|
navigationUrls: [
|
||||||
|
{positive: true, regex: '^\\/.*$'},
|
||||||
|
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*\\.[^/]*$'},
|
||||||
|
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*$'},
|
||||||
|
{positive: false, regex: '^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$'},
|
||||||
|
],
|
||||||
|
hashTable: {}
|
||||||
|
});
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(err => done.fail(err));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
16
packages/service-worker/config/testing/BUILD.bazel
Normal file
16
packages/service-worker/config/testing/BUILD.bazel
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
exports_files(["package.json"])
|
||||||
|
|
||||||
|
load("//tools:defaults.bzl", "ts_library")
|
||||||
|
|
||||||
|
ts_library(
|
||||||
|
name = "testing",
|
||||||
|
srcs = glob([
|
||||||
|
"*.ts",
|
||||||
|
]),
|
||||||
|
deps = [
|
||||||
|
"//packages/service-worker/cli",
|
||||||
|
"//packages/service-worker/config",
|
||||||
|
],
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user