aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/client/pages/NoteTypesPage.test.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/pages/NoteTypesPage.test.tsx')
-rw-r--r--src/client/pages/NoteTypesPage.test.tsx49
1 files changed, 6 insertions, 43 deletions
diff --git a/src/client/pages/NoteTypesPage.test.tsx b/src/client/pages/NoteTypesPage.test.tsx
index 612cf16..1a41185 100644
--- a/src/client/pages/NoteTypesPage.test.tsx
+++ b/src/client/pages/NoteTypesPage.test.tsx
@@ -267,7 +267,7 @@ describe("NoteTypesPage", () => {
).toBeDefined();
});
- it("creates note type and refreshes list", async () => {
+ it("submits the new note type via the create endpoint", async () => {
const user = userEvent.setup();
const newNoteType = {
id: "note-type-new",
@@ -279,35 +279,22 @@ describe("NoteTypesPage", () => {
updatedAt: "2024-01-03T00:00:00Z",
};
- // Mock the POST response and subsequent GET after reload
mockNoteTypesPost.mockResolvedValue({
ok: true,
json: async () => ({ noteType: newNoteType }),
});
- mockNoteTypesGet.mockResolvedValue({ noteTypes: [newNoteType] });
renderWithProviders({ initialNoteTypes: [] });
- // Open modal
await user.click(screen.getByRole("button", { name: /New Note Type/i }));
-
- // Fill in form
await user.type(screen.getByLabelText("Name"), "New Note Type");
-
- // Submit
await user.click(screen.getByRole("button", { name: "Create" }));
- // Modal should close
await waitFor(() => {
expect(screen.queryByRole("dialog")).toBeNull();
});
- // Note type list should be refreshed with new note type
- await waitFor(() => {
- expect(
- screen.getByRole("heading", { name: "New Note Type" }),
- ).toBeDefined();
- });
+ expect(mockNoteTypesPost).toHaveBeenCalledTimes(1);
});
});
@@ -364,7 +351,7 @@ describe("NoteTypesPage", () => {
});
});
- it("edits note type and refreshes list", async () => {
+ it("submits the edited note type via the update endpoint", async () => {
const user = userEvent.setup();
const mockNoteTypeWithFields = {
...mockNoteTypes[0],
@@ -395,42 +382,29 @@ describe("NoteTypesPage", () => {
ok: true,
json: async () => ({ noteType: updatedNoteType }),
});
- mockNoteTypesGet.mockResolvedValue({
- noteTypes: [updatedNoteType, mockNoteTypes[1]],
- });
renderWithProviders({ initialNoteTypes: mockNoteTypes });
- // Click Edit on first note type
const editButtons = screen.getAllByRole("button", {
name: "Edit note type",
});
await user.click(editButtons.at(0) as HTMLElement);
- // Wait for the editor to load
await waitFor(() => {
expect(screen.getByLabelText("Name")).toHaveProperty("value", "Basic");
});
- // Update name
const nameInput = screen.getByLabelText("Name");
await user.clear(nameInput);
await user.type(nameInput, "Updated Basic");
- // Save
await user.click(screen.getByRole("button", { name: "Save Changes" }));
- // Modal should close
await waitFor(() => {
expect(screen.queryByRole("dialog")).toBeNull();
});
- // Note type list should be refreshed with updated name
- await waitFor(() => {
- expect(
- screen.getByRole("heading", { name: "Updated Basic" }),
- ).toBeDefined();
- });
+ expect(mockNoteTypePut).toHaveBeenCalledTimes(1);
});
});
@@ -463,29 +437,25 @@ describe("NoteTypesPage", () => {
expect(dialog.textContent).toContain("Basic");
});
- it("deletes note type and refreshes list", async () => {
+ it("submits the note type delete via the delete endpoint", async () => {
const user = userEvent.setup();
mockNoteTypeDelete.mockResolvedValue({
ok: true,
json: async () => ({ success: true }),
});
- mockNoteTypesGet.mockResolvedValue({ noteTypes: [mockNoteTypes[1]] });
renderWithProviders({ initialNoteTypes: mockNoteTypes });
- // Click Delete on first note type
const deleteButtons = screen.getAllByRole("button", {
name: "Delete note type",
});
await user.click(deleteButtons.at(0) as HTMLElement);
- // Wait for modal to appear
await waitFor(() => {
expect(screen.getByRole("dialog")).toBeDefined();
});
- // Confirm deletion
const dialog = screen.getByRole("dialog");
const dialogButtons = dialog.querySelectorAll("button");
const deleteButton = Array.from(dialogButtons).find(
@@ -493,18 +463,11 @@ describe("NoteTypesPage", () => {
);
await user.click(deleteButton as HTMLElement);
- // Modal should close
await waitFor(() => {
expect(screen.queryByRole("dialog")).toBeNull();
});
- // Note type list should be refreshed without deleted note type
- await waitFor(() => {
- expect(screen.queryByRole("heading", { name: "Basic" })).toBeNull();
- });
- expect(
- screen.getByRole("heading", { name: "Basic (and reversed card)" }),
- ).toBeDefined();
+ expect(mockNoteTypeDelete).toHaveBeenCalledTimes(1);
});
});
});