Something went wrong. Try again.
[mirror] A local-first desktop markdown writer with grammar checking, at proto integration, and more github.com/stormlightlabs/writer/releases
atproto codemirror markdown tauri rust react
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091import { LayoutSettingsPanel, RoutedSettingsSheet } from "$components/AppLayout/LayoutSettingsPanel";import { resetLayoutStore } from "$state/stores/layout";import { resetUiStore, useUiStore } from "$state/stores/ui";import { fireEvent, render, screen, waitFor } from "@testing-library/react";import { beforeEach, describe, expect, it } from "vitest";import { Router } from "wouter";import { useHashLocation } from "wouter/use-hash-location";
function renderSettingsSheets() { return render( <Router hook={useHashLocation}> <LayoutSettingsPanel /> <RoutedSettingsSheet /> </Router>, );}
describe("Layout settings routing", () => { beforeEach(() => { resetLayoutStore(); resetUiStore(); globalThis.history.replaceState(null, "", "#/"); });
it("opens routed settings sheet from view more and closes back to base route", async () => { useUiStore.getState().setLayoutSettingsOpen(true);
renderSettingsSheets();
fireEvent.click(screen.getByRole("button", { name: "View more" }));
expect(globalThis.location.hash).toContain("/settings"); expect(useUiStore.getState().layoutSettingsOpen).toBe(false); expect(screen.getByRole("dialog", { name: "Settings" })).toBeInTheDocument();
fireEvent.click(screen.getByRole("button", { name: "Close settings panel" }));
await waitFor(() => { expect(globalThis.location.hash).toBe("#/"); }); });
it("renders routed settings sheet on /settings", () => { globalThis.history.replaceState(null, "", "#/settings");
render( <Router hook={useHashLocation}> <RoutedSettingsSheet /> </Router>, );
expect(screen.getByRole("dialog", { name: "Settings" })).toBeInTheDocument(); });
it("shows POS color legend only when parts of speech highlighting is enabled", () => { globalThis.history.replaceState(null, "", "#/settings");
render( <Router hook={useHashLocation}> <RoutedSettingsSheet /> </Router>, );
expect(screen.queryByText("Part of Speech Colors")).not.toBeInTheDocument();
fireEvent.click(screen.getByRole("button", { name: /Writing Tools/ })); fireEvent.click(screen.getByRole("switch", { name: "Parts of Speech Highlighting" }));
expect(screen.getByText("Part of Speech Colors")).toBeInTheDocument(); expect(screen.getByText("Noun")).toBeInTheDocument(); expect(screen.getByText("Verb")).toBeInTheDocument(); expect(screen.getByText("Adjective")).toBeInTheDocument(); expect(screen.getByText("Adverb")).toBeInTheDocument(); expect(screen.getByText("Conjunction")).toBeInTheDocument(); });
it("shows Standard.Site import from settings without requiring a session", () => { globalThis.history.replaceState(null, "", "#/settings");
render( <Router hook={useHashLocation}> <RoutedSettingsSheet /> </Router>, );
// FIXME: wtf? fireEvent.click(screen.getByRole("button", { name: "TangledManage your AT Protocol session." })); expect(screen.getByText("Not connected")).toBeInTheDocument(); });});