- Move the Tauri app (React frontend + Rust backend) into desktop/ via git mv — configs unchanged (relative paths: tauri.conf.json, vite.config.ts) - Root package.json becomes a private bun workspace container with orchestration scripts; desktop package renamed gridline-desktop - Scaffold www/ with Astro 7 + Tailwind v4 (hand-wired vite plugin, static output, ready for Dokploy) - Update release.yml for the new layout: projectPath: desktop, desktop/src-tauri resource paths, rust-cache workspace path - Update README + AGENTS.md structure trees and dev commands - Verified: vitest (1074), cargo test (354), desktop build, tauri dev (window launches), tauri build (dmg + app bundles), Astro build
39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { validateSettingsExport } from "./settingsImport";
|
|
import type { Settings } from "./types";
|
|
|
|
const good: Settings = {
|
|
confirm_before_delete: true, default_folder_id: null, theme: "dark", font_size: "medium",
|
|
default_ports: { postgresql: 5432 }, tag_order: null, table_refresh_rate: 5, table_page_size: 50,
|
|
shortcuts: { open_command_palette: "Cmd+K" }, accent_color: "#2563EB",
|
|
editor_font_size: 14, editor_font_family: "Menlo", editor_word_wrap: "off", editor_minimap: true, editor_tab_size: 2,
|
|
};
|
|
|
|
describe("validateSettingsExport", () => {
|
|
it("accepts a well-formed object", () => {
|
|
const r = validateSettingsExport({ schemaVersion: 1, settings: good });
|
|
expect(r.ok).toBe(true);
|
|
});
|
|
|
|
it("rejects an invalid theme", () => {
|
|
const r = validateSettingsExport({ schemaVersion: 1, settings: { ...good, theme: "purple" as never } });
|
|
expect(r.ok).toBe(false);
|
|
if (!r.ok) expect(r.errors.some((e) => e.field === "theme")).toBe(true);
|
|
});
|
|
|
|
it("clamps editor_font_size to [8,24]", () => {
|
|
const r = validateSettingsExport({ schemaVersion: 1, settings: { ...good, editor_font_size: 999 } });
|
|
expect(r.ok).toBe(true);
|
|
if (r.ok) expect(r.settings.editor_font_size).toBe(24);
|
|
});
|
|
|
|
it("tolerates unknown keys (version skew)", () => {
|
|
const r = validateSettingsExport({ schemaVersion: 99, settings: { ...good, futureField: true } } as never);
|
|
expect(r.ok).toBe(true);
|
|
});
|
|
|
|
it("requires a non-negative table_refresh_rate", () => {
|
|
const r = validateSettingsExport({ schemaVersion: 1, settings: { ...good, table_refresh_rate: -1 } });
|
|
expect(r.ok).toBe(false);
|
|
});
|
|
}); |