99 lines
2.7 KiB
JavaScript
99 lines
2.7 KiB
JavaScript
const browserify = require("@cypress/browserify-preprocessor");
|
|
const { default: preprocessor, transform } = require(".");
|
|
|
|
jest.mock("@cypress/browserify-preprocessor");
|
|
const { defaultOptions } = jest.requireActual(
|
|
"@cypress/browserify-preprocessor"
|
|
);
|
|
|
|
describe("Preprocessor", () => {
|
|
beforeEach(() => {
|
|
browserify.defaultOptions = defaultOptions;
|
|
browserify.mockReturnValue(() => {});
|
|
});
|
|
|
|
afterEach(() => {
|
|
browserify.mockClear();
|
|
});
|
|
|
|
it("should use Cypress browserify options by default", async () => {
|
|
await preprocessor()({ shouldWatch: false });
|
|
|
|
global.jestExpect(browserify).toHaveBeenCalledWith({
|
|
...defaultOptions,
|
|
browserifyOptions: {
|
|
...defaultOptions.browserifyOptions,
|
|
transform: [transform, ...defaultOptions.browserifyOptions.transform],
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should add transform when other transforms are defined in options", async () => {
|
|
await preprocessor({
|
|
browserifyOptions: {
|
|
transform: ["babelify"],
|
|
},
|
|
})({ shouldWatch: false });
|
|
|
|
global.jestExpect(browserify).toHaveBeenCalledWith({
|
|
browserifyOptions: {
|
|
transform: [transform, "babelify"],
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should preserve transforms in options when our transform is already included", async () => {
|
|
const options = {
|
|
browserifyOptions: {
|
|
extensions: ["js", "ts"],
|
|
plugins: [["tsify"]],
|
|
transform: ["aliasify", transform, "babelify"],
|
|
},
|
|
};
|
|
|
|
await preprocessor(options)({ shouldWatch: false });
|
|
|
|
global.jestExpect(browserify).toHaveBeenCalledWith(options);
|
|
});
|
|
|
|
it("should add our transform when no other transforms are defined in options", async () => {
|
|
const options = {
|
|
browserifyOptions: {
|
|
extensions: ["js", "ts"],
|
|
plugins: [["tsify"]],
|
|
},
|
|
};
|
|
|
|
await preprocessor(options)({ shouldWatch: false });
|
|
|
|
global.jestExpect(browserify).toHaveBeenCalledWith({
|
|
...options,
|
|
browserifyOptions: {
|
|
...options.browserifyOptions,
|
|
transform: [transform],
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should add our transform when browserifyOptions property is not passed to options", async () => {
|
|
const options = { unsupported: true };
|
|
|
|
await preprocessor(options)({ shouldWatch: false });
|
|
|
|
global.jestExpect(browserify).toHaveBeenCalledWith({
|
|
...options,
|
|
browserifyOptions: {
|
|
transform: [transform],
|
|
},
|
|
});
|
|
});
|
|
|
|
it("should fail gracefully when options is not an object", () => {
|
|
const err = new Error("Preprocessor options must be an object");
|
|
|
|
global.jestExpect(() => preprocessor("options")).toThrow(err);
|
|
global.jestExpect(() => preprocessor(1)).toThrow(err);
|
|
global.jestExpect(() => preprocessor(false)).toThrow(err);
|
|
});
|
|
});
|