frontity
Version:
Frontity cli and entry point to other packages
63 lines (53 loc) • 1.93 kB
text/typescript
import build from "../build";
import * as utils from "../../utils";
import * as buildCmd from "../../commands/build";
import { EventPromised } from "../../utils/eventPromised";
jest.mock("../../commands/build");
const mockedUtils = utils as any;
const mockedDev = buildCmd as jest.Mocked<typeof buildCmd>;
describe("build", () => {
beforeEach(() => {
mockedUtils.isFrontityProjectRoot = jest.fn();
mockedUtils.errorLogger = jest.fn(() => {
throw new Error("Process terminated");
});
mockedDev.default.mockReset();
mockedDev.default.mockReturnValue(
new EventPromised((resolve) => resolve())
);
});
test("should receive default values", async () => {
await build({});
expect(mockedDev.default.mock.calls).toMatchSnapshot();
});
test("should get values from ENV variables", async () => {
process.env.FRONTITY_BUILD_TARGET = "es5";
process.env.FRONTITY_BUILD_DEVELOPMENT = "true";
process.env.FRONTITY_BUILD_PUBLIC_PATH = "/public/path";
process.env.FRONTITY_BUILD_ANALYZE = "true";
await build({});
expect(mockedDev.default.mock.calls).toMatchSnapshot();
});
test("should ignore ENV variables for passed arguments", async () => {
process.env.FRONTITY_BUILD_TARGET = "es5";
process.env.FRONTITY_BUILD_DEVELOPMENT = "true";
process.env.FRONTITY_BUILD_PUBLIC_PATH = "/public/path";
process.env.FRONTITY_BUILD_ANALYZE = "true";
await build({
target: "module",
development: false,
publicPath: "/static",
analyze: false,
});
expect(mockedDev.default.mock.calls).toMatchSnapshot();
});
test("should fail if an invalid target is passed", async () => {
try {
await build({ target: "not-valid-target" });
} catch (error) {
// Ignore error.
}
expect(mockedDev.default).not.toHaveBeenCalled();
expect(mockedUtils.errorLogger.mock.calls).toMatchSnapshot();
});
});