71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
import { describe, expect, test } from "bun:test";
|
|
import { createInitialAppState } from "@editor/initial-state";
|
|
import { documentAddArtboardCommand, documentAddAssetCommand, documentAddImageLayerCommand, documentSetArtboardBoundsCommand } from "./document";
|
|
|
|
describe("document commands", () => {
|
|
test("adds transparent artboard", () => {
|
|
const next = documentAddArtboardCommand.execute(
|
|
{ state: createInitialAppState("Test") },
|
|
{ id: "a1", name: "Artboard 1", bounds: { x: 0, y: 0, w: 320, h: 240 } },
|
|
);
|
|
|
|
expect(next.document.artboards).toEqual([
|
|
{
|
|
id: "a1",
|
|
name: "Artboard 1",
|
|
bounds: { x: 0, y: 0, w: 320, h: 240 },
|
|
backgroundColor: "transparent",
|
|
layers: [],
|
|
},
|
|
]);
|
|
});
|
|
|
|
test("adds assets", () => {
|
|
const next = documentAddAssetCommand.execute(
|
|
{ state: createInitialAppState("Test") },
|
|
{ asset: { id: "asset-1", name: "Image", mimeType: "image/png", source: "blob:test", intrinsicSize: { w: 100, h: 50 } } },
|
|
);
|
|
|
|
expect(next.document.assets).toEqual([
|
|
{ id: "asset-1", name: "Image", mimeType: "image/png", source: "blob:test", intrinsicSize: { w: 100, h: 50 } },
|
|
]);
|
|
});
|
|
|
|
test("adds image layers to artboards", () => {
|
|
const state = documentAddArtboardCommand.execute(
|
|
{ state: createInitialAppState("Test") },
|
|
{ id: "a1", name: "Artboard 1", bounds: { x: 0, y: 0, w: 320, h: 240 } },
|
|
);
|
|
|
|
const next = documentAddImageLayerCommand.execute(
|
|
{ state },
|
|
{
|
|
artboardId: "a1",
|
|
layer: {
|
|
id: "l1",
|
|
type: "image",
|
|
name: "Image",
|
|
visible: true,
|
|
locked: false,
|
|
opacity: 1,
|
|
assetId: "asset-1",
|
|
transform: { position: { x: 10, y: 20 }, scale: { x: 1, y: 1 }, rotation: 0 },
|
|
},
|
|
},
|
|
);
|
|
|
|
expect(next.document.artboards[0]?.layers.map((layer) => layer.id)).toEqual(["l1"]);
|
|
});
|
|
|
|
test("sets artboard bounds", () => {
|
|
const state = documentAddArtboardCommand.execute(
|
|
{ state: createInitialAppState("Test") },
|
|
{ id: "a1", name: "Artboard 1", bounds: { x: 0, y: 0, w: 320, h: 240 } },
|
|
);
|
|
|
|
const next = documentSetArtboardBoundsCommand.execute({ state }, { id: "a1", bounds: { x: 10, y: 20, w: 640, h: 480 } });
|
|
|
|
expect(next.document.artboards[0]?.bounds).toEqual({ x: 10, y: 20, w: 640, h: 480 });
|
|
});
|
|
});
|