Track HiveGrid Cloud planning reference
This commit is contained in:
1 parent
b3d5ea6764
commit
e341c5938a
5784 files changed
+1104929
-3
No files matched your search
@@ -0,0 +1,58 @@
|
||||
// @vitest-environment node
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
vi.mock("~/utils/db/users.db.server", () => ({
|
||||
updateUserProfile: vi.fn(),
|
||||
}));
|
||||
|
||||
const { normalizeLightOrDarkMode, nextLightOrDarkMode, persistUserLightOrDarkMode } = await import("./userThemePreference.server");
|
||||
const { updateUserProfile } = await import("~/utils/db/users.db.server");
|
||||
|
||||
describe("user theme preference helpers", () => {
|
||||
beforeEach(() => {
|
||||
vi.mocked(updateUserProfile).mockReset();
|
||||
});
|
||||
|
||||
it("accepts only light and dark values", () => {
|
||||
expect(normalizeLightOrDarkMode("light")).toBe("light");
|
||||
expect(normalizeLightOrDarkMode("dark")).toBe("dark");
|
||||
});
|
||||
|
||||
it("normalizes missing and unknown values to light", () => {
|
||||
expect(normalizeLightOrDarkMode(undefined)).toBe("light");
|
||||
expect(normalizeLightOrDarkMode(null)).toBe("light");
|
||||
expect(normalizeLightOrDarkMode("")).toBe("light");
|
||||
expect(normalizeLightOrDarkMode("system")).toBe("light");
|
||||
});
|
||||
|
||||
it("toggles from normalized current values", () => {
|
||||
expect(nextLightOrDarkMode("light")).toBe("dark");
|
||||
expect(nextLightOrDarkMode("dark")).toBe("light");
|
||||
expect(nextLightOrDarkMode("unknown")).toBe("dark");
|
||||
});
|
||||
|
||||
it("does not write for anonymous users", async () => {
|
||||
await expect(persistUserLightOrDarkMode(undefined, "dark")).resolves.toBeNull();
|
||||
await expect(persistUserLightOrDarkMode("", "dark")).resolves.toBeNull();
|
||||
|
||||
expect(updateUserProfile).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("persists a normalized value for authenticated users", async () => {
|
||||
const user = { id: "user-1" } as Awaited<ReturnType<typeof updateUserProfile>>;
|
||||
vi.mocked(updateUserProfile).mockResolvedValueOnce(user);
|
||||
|
||||
await expect(persistUserLightOrDarkMode("user-1", "dark")).resolves.toEqual(user);
|
||||
|
||||
expect(updateUserProfile).toHaveBeenCalledTimes(1);
|
||||
expect(updateUserProfile).toHaveBeenCalledWith({ lightOrDarkMode: "dark" }, "user-1");
|
||||
});
|
||||
|
||||
it("normalizes unknown values before persisting", async () => {
|
||||
vi.mocked(updateUserProfile).mockResolvedValueOnce({ id: "user-1" } as Awaited<ReturnType<typeof updateUserProfile>>);
|
||||
|
||||
await persistUserLightOrDarkMode("user-1", "system");
|
||||
|
||||
expect(updateUserProfile).toHaveBeenCalledWith({ lightOrDarkMode: "light" }, "user-1");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user