excalidraw/src/tests/library.test.tsx

44 lines
1.3 KiB
TypeScript
Raw Normal View History

2020-10-30 21:01:41 +01:00
import React from "react";
import { render, waitFor } from "./test-utils";
import ExcalidrawApp from "../excalidraw-app";
2020-10-30 21:01:41 +01:00
import { API } from "./helpers/api";
import { MIME_TYPES } from "../constants";
import { LibraryItem } from "../types";
const { h } = window;
describe("library", () => {
beforeEach(async () => {
await render(<ExcalidrawApp />);
h.app.library.resetLibrary();
2020-10-30 21:01:41 +01:00
});
it("import library via drag&drop", async () => {
expect(await h.app.library.loadLibrary()).toEqual([]);
2020-10-30 21:01:41 +01:00
await API.drop(
await API.loadFile("./fixtures/fixture_library.excalidrawlib"),
);
await waitFor(async () => {
expect(await h.app.library.loadLibrary()).toEqual([
2020-10-30 21:01:41 +01:00
[expect.objectContaining({ id: "A" })],
]);
});
});
// NOTE: mocked to test logic, not actual drag&drop via UI
it("drop library item onto canvas", async () => {
expect(h.elements).toEqual([]);
const libraryItems: LibraryItem = JSON.parse(
await API.readFile("./fixtures/fixture_library.excalidrawlib", "utf8"),
).library[0];
await API.drop(
new Blob([JSON.stringify(libraryItems)], {
type: MIME_TYPES.excalidrawlib,
}),
);
await waitFor(() => {
expect(h.elements).toEqual([expect.objectContaining({ id: "A_copy" })]);
});
});
});