aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/DefaultSidebar.test.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/components/DefaultSidebar.test.tsx')
-rw-r--r--packages/excalidraw/components/DefaultSidebar.test.tsx144
1 files changed, 144 insertions, 0 deletions
diff --git a/packages/excalidraw/components/DefaultSidebar.test.tsx b/packages/excalidraw/components/DefaultSidebar.test.tsx
new file mode 100644
index 0000000..ac1e296
--- /dev/null
+++ b/packages/excalidraw/components/DefaultSidebar.test.tsx
@@ -0,0 +1,144 @@
+import React from "react";
+import { DEFAULT_SIDEBAR } from "../constants";
+import { DefaultSidebar } from "../index";
+import {
+ fireEvent,
+ waitFor,
+ withExcalidrawDimensions,
+} from "../tests/test-utils";
+import {
+ assertExcalidrawWithSidebar,
+ assertSidebarDockButton,
+} from "./Sidebar/siderbar.test.helpers";
+
+const { h } = window;
+
+describe("DefaultSidebar", () => {
+ it("when `docked={undefined}` & `onDock={undefined}`, should allow docking", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { dockButton } = await assertSidebarDockButton(true);
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(true);
+ expect(dockButton).toHaveClass("selected");
+ });
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+ expect(dockButton).not.toHaveClass("selected");
+ });
+ },
+ );
+ });
+
+ it("when `docked={undefined}` & `onDock`, should allow docking", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar onDock={() => {}} />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { dockButton } = await assertSidebarDockButton(true);
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(true);
+ expect(dockButton).toHaveClass("selected");
+ });
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+ expect(dockButton).not.toHaveClass("selected");
+ });
+ },
+ );
+ });
+
+ it("when `docked={true}` & `onDock`, should allow docking", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar onDock={() => {}} />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { dockButton } = await assertSidebarDockButton(true);
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(true);
+ expect(dockButton).toHaveClass("selected");
+ });
+
+ fireEvent.click(dockButton);
+ await waitFor(() => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+ expect(dockButton).not.toHaveClass("selected");
+ });
+ },
+ );
+ });
+
+ it("when `onDock={false}`, should disable docking", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar onDock={false} />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ await withExcalidrawDimensions(
+ { width: 1920, height: 1080 },
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ await assertSidebarDockButton(false);
+ },
+ );
+ },
+ );
+ });
+
+ it("when `docked={true}` & `onDock={false}`, should force-dock sidebar", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar docked onDock={false} />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { sidebar } = await assertSidebarDockButton(false);
+ expect(sidebar).toHaveClass("sidebar--docked");
+ },
+ );
+ });
+
+ it("when `docked={true}` & `onDock={undefined}`, should force-dock sidebar", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar docked />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { sidebar } = await assertSidebarDockButton(false);
+ expect(sidebar).toHaveClass("sidebar--docked");
+ },
+ );
+ });
+
+ it("when `docked={false}` & `onDock={undefined}`, should force-undock sidebar", async () => {
+ await assertExcalidrawWithSidebar(
+ <DefaultSidebar docked={false} />,
+ DEFAULT_SIDEBAR.name,
+ async () => {
+ expect(h.state.defaultSidebarDockedPreference).toBe(false);
+
+ const { sidebar } = await assertSidebarDockButton(false);
+ expect(sidebar).not.toHaveClass("sidebar--docked");
+ },
+ );
+ });
+});