@frontity/core
Version:
The core package of the Frontity framework.
183 lines (175 loc) • 5.5 kB
text/typescript
import { hasEntryPoint, getBothScriptTags } from "../stats";
describe("hasEntryPoint", () => {
test("should return true if the entry points exists", () => {
const stats = { assetsByChunkName: { "chunk-1": "chunk-1.js" } };
expect(hasEntryPoint({ site: "chunk-1", stats })).toBe(true);
});
test("should return false if the entry points doesn't exist", () => {
const stats = { assetsByChunkName: {} };
expect(hasEntryPoint({ site: "chunk-1", stats })).toBe(false);
});
});
describe("getBothScriptTags", () => {
test("should return both es5 and module tags in development", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.js",
"chunk-2": "chunk-2.module.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.js",
"chunk-2": "chunk-2.es5.js",
},
};
const extractor = {
publicPath: "/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.js" },
{ filename: "chunk-2.module.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});
test("should return both es5 and module tags in production", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.123.js",
"chunk-2": "chunk-2.module.123.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.456.js",
"chunk-2": "chunk-2.es5.456.js",
},
};
const extractor = {
publicPath: "/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.123.js" },
{ filename: "chunk-2.module.123.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});
test("should work with secondary chunks in development", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.js",
"chunk-2": "chunk-2.module.js",
"chunk-1~chunk-2": "chunk-1~chunk-2.module.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.js",
"chunk-2": "chunk-2.es5.js",
"chunk-1~chunk-2": "chunk-1~chunk-2.es5.js",
},
};
const extractor = {
publicPath: "/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.js" },
{ filename: "chunk-2.module.js" },
{ filename: "chunk-1~chunk-2.module.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});
test("should work with secondary chunks in production", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.123.js",
"chunk-2": "chunk-2.module.123.js",
"chunk-1~chunk-2": "chunk-1~chunk-2.module.123.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.456.js",
"chunk-2": "chunk-2.es5.456.js",
"chunk-1~chunk-2": "chunk-1~chunk-2.es5.456.js",
},
};
const extractor = {
publicPath: "/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.123.js" },
{ filename: "chunk-2.module.123.js" },
{ filename: "chunk-1~chunk-2.module.123.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});
});
test("should return correct chunk URLs in development (publicPath has a specified domain)", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.js",
"chunk-2": "chunk-2.module.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.js",
"chunk-2": "chunk-2.es5.js",
},
};
const extractor = {
publicPath: "http://localhost:3000/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.js" },
{ filename: "chunk-2.module.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});
test("should return correct chunk URLs in production (publicPath has a specified domain)", () => {
const moduleStats = {
assetsByChunkName: {
"chunk-1": "chunk-1.module.123.js",
"chunk-2": "chunk-2.module.123.js",
},
};
const es5Stats = {
assetsByChunkName: {
"chunk-1": "chunk-1.es5.456.js",
"chunk-2": "chunk-2.es5.456.js",
},
};
const extractor = {
publicPath: "http://localhost:3000/public-path/",
getMainAssets: () => [
{ filename: "chunk-1.module.123.js" },
{ filename: "chunk-2.module.123.js" },
],
getRequiredChunksScriptTag: (arg: {}) =>
!!arg && "<script>REQ-CHUNK-SCRIPT-TAG</script>",
};
expect(
getBothScriptTags({ moduleStats, es5Stats, extractor })
).toMatchSnapshot();
});