1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
/* eslint-env browser */
import {
compile,
getCompiler,
getEntryByInjectType,
getErrors,
getWarnings,
runInJsDom,
} from "./helpers/index";
describe('"styleTagTransform" option', () => {
it(`should work when the "styleTagTransform" option is not specify`, async () => {
const entry = getEntryByInjectType("simple.js", "styleTag");
const compiler = getCompiler(entry, {
injectType: "styleTag",
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should work when the "styleTagTransform" option is specify`, async () => {
const entry = getEntryByInjectType("simple.js", "styleTag");
const compiler = getCompiler(entry, {
injectType: "styleTag",
// eslint-disable-next-line object-shorthand,func-names
styleTagTransform: function (css, style) {
// eslint-disable-next-line no-param-reassign
style.innerHTML = `${css}.modify{}\n`;
document.head.appendChild(style);
},
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should work when the "styleTagTransform" option is specify and injectType lazyStyleTag`, async () => {
const entry = getEntryByInjectType("simple.js", "lazyStyleTag");
const compiler = getCompiler(entry, {
injectType: "lazyStyleTag",
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should work when the "styleTagTransform" option is not specify and injectType lazyStyleTag`, async () => {
const entry = getEntryByInjectType("simple.js", "lazyStyleTag");
const compiler = getCompiler(entry, {
injectType: "lazyStyleTag",
// eslint-disable-next-line object-shorthand,func-names
styleTagTransform: function (css, style) {
// eslint-disable-next-line no-param-reassign
style.innerHTML = `${css}.modify{}\n`;
document.head.appendChild(style);
},
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should work when the "styleTagTransform" option is path to module and injectType lazyStyleTag`, async () => {
const entry = getEntryByInjectType("simple.js", "lazyStyleTag");
const compiler = getCompiler(entry, {
injectType: "lazyStyleTag",
styleTagTransform: require.resolve("./fixtures/styleTagTransform"),
});
const stats = await compile(compiler);
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
it(`should "styleTagTransform" function path added to buildDependencies when injectType lazyStyleTag`, async () => {
const styleTagTransformFn = require.resolve("./fixtures/styleTagTransform");
const entry = getEntryByInjectType("simple.js", "lazyStyleTag");
const compiler = getCompiler(entry, {
injectType: "lazyStyleTag",
styleTagTransform: styleTagTransformFn,
});
const stats = await compile(compiler);
const { buildDependencies } = stats.compilation;
runInJsDom("main.bundle.js", compiler, stats, (dom) => {
expect(dom.serialize()).toMatchSnapshot("DOM");
});
expect(buildDependencies.has(styleTagTransformFn)).toBe(true);
expect(getWarnings(stats)).toMatchSnapshot("warnings");
expect(getErrors(stats)).toMatchSnapshot("errors");
});
});
|