aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/tests/queries
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/tests/queries
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/tests/queries')
-rw-r--r--packages/excalidraw/tests/queries/dom.ts19
-rw-r--r--packages/excalidraw/tests/queries/toolQueries.ts25
2 files changed, 44 insertions, 0 deletions
diff --git a/packages/excalidraw/tests/queries/dom.ts b/packages/excalidraw/tests/queries/dom.ts
new file mode 100644
index 0000000..e1515c8
--- /dev/null
+++ b/packages/excalidraw/tests/queries/dom.ts
@@ -0,0 +1,19 @@
+import { waitFor } from "@testing-library/dom";
+import { fireEvent } from "@testing-library/react";
+
+export const getTextEditor = async (selector: string, waitForEditor = true) => {
+ const query = () => document.querySelector(selector) as HTMLTextAreaElement;
+ if (waitForEditor) {
+ await waitFor(() => expect(query()).not.toBe(null));
+ return query();
+ }
+ return query();
+};
+
+export const updateTextEditor = (
+ editor: HTMLTextAreaElement | HTMLInputElement,
+ value: string,
+) => {
+ fireEvent.change(editor, { target: { value } });
+ fireEvent.input(editor);
+};
diff --git a/packages/excalidraw/tests/queries/toolQueries.ts b/packages/excalidraw/tests/queries/toolQueries.ts
new file mode 100644
index 0000000..df0afa1
--- /dev/null
+++ b/packages/excalidraw/tests/queries/toolQueries.ts
@@ -0,0 +1,25 @@
+import { queries, buildQueries } from "@testing-library/react";
+import type { ToolType } from "../../types";
+import { TOOL_TYPE } from "../../constants";
+
+const _getAllByToolName = (container: HTMLElement, tool: ToolType | "lock") => {
+ const toolTitle = tool === "lock" ? "lock" : TOOL_TYPE[tool];
+ return queries.getAllByTestId(container, `toolbar-${toolTitle}`);
+};
+
+const getMultipleError = (_container: any, tool: any) =>
+ `Found multiple elements with tool name: ${tool}`;
+const getMissingError = (_container: any, tool: any) =>
+ `Unable to find an element with tool name: ${tool}`;
+
+export const [
+ queryByToolName,
+ getAllByToolName,
+ getByToolName,
+ findAllByToolName,
+ findByToolName,
+] = buildQueries<(ToolType | "lock")[]>(
+ _getAllByToolName,
+ getMultipleError,
+ getMissingError,
+);