@embeddable.com/sdk-core
Version:
Core Embeddable SDK module responsible for web-components bundling and publishing.
99 lines (92 loc) • 2.73 kB
text/typescript
import * as fs from "node:fs/promises";
import * as path from "node:path";
import { createManifest } from "./cleanup";
import { findFiles, loadJson } from "@embeddable.com/sdk-utils";
import { ResolvedEmbeddableConfig } from "./defineConfig";
const ctx = {
client: {
tmpDir: "tmpDir",
stencilBuild: "stencilBuild",
buildDir: "buildDir",
},
buildTime: [80, 525000],
};
vi.mock("node:fs/promises", () => ({
writeFile: vi.fn(),
readFile: vi.fn(),
rename: vi.fn(),
}));
vi.mock("@embeddable.com/sdk-utils", () => ({
findFiles: vi.fn(),
loadJson: vi.fn(),
}));
vi.mock("node:path", async () => {
const actual = await vi.importActual("node:path");
return {
...actual,
resolve: vi.fn(),
basename: vi.fn(),
join: vi.fn(),
};
});
describe("cleanup", () => {
describe("createManifest", () => {
beforeEach(() => {
vi.mocked(fs.writeFile).mockImplementation(async () => undefined);
vi.mocked(fs.rename).mockImplementation(async () => undefined);
vi.mocked(findFiles).mockResolvedValue([["", ""]]);
vi.mocked(loadJson).mockResolvedValue({
test: "test_value",
});
vi.mocked(path.basename).mockReturnValue("basename");
vi.mocked(path.join).mockImplementation((...args) => args.join("/"));
Object.defineProperties(process, {
platform: {
value: "darwin",
},
version: {
value: "v18.20.2",
},
env: {
value: {
npm_config_user_agent: "npm/10.7.0",
},
},
});
});
it("should create manifest", async () => {
await createManifest({
ctx: ctx as unknown as ResolvedEmbeddableConfig,
typesFileName: "typesFileName",
metaFileName: "metaFileName",
editorsMetaFileName: "editorsMetaFileName",
stencilWrapperFileName: "stencilWrapperFileName",
});
expect(fs.writeFile).toHaveBeenCalledWith(
"tmpDir/embeddable-manifest.json",
JSON.stringify({
entryFiles: {
"embeddable-types.js": "typesFileName",
"embeddable-components-meta.js": "metaFileName",
"embeddable-editors-meta.js": "editorsMetaFileName",
"embeddable-wrapper.esm.js": "stencilWrapperFileName",
},
metadata: {
nodeVersion: "v18.20.2",
platform: "darwin",
sdkVersions: {},
packageManager: "npm",
packageManagerVersion: "10.7.0",
globalHooks: {
test: "test_value",
},
metrics: {
buildTime: "PT1M20.001S",
},
origin: "push",
},
}),
);
});
});
});