import type { ProjectReadFileResult } from "@t3tools/contracts";import { EnvironmentId } from "@t3tools/contracts";import { afterEach, describe, expect, it, vi } from "vite-plus/test"; import { clearProjectFileQueryData, confirmProjectFileQueryData, getOptimisticProjectFileQueryData, resolveProjectFileQueryData, setProjectFileQueryData,} from "./projectFilesQueryState"; const environmentId = EnvironmentId.make("environment-project-files-query-test"); describe("project files queries", () => { afterEach(() => { clearProjectFileQueryData(environmentId, "/repo", "convex.json"); vi.unstubAllGlobals(); }); it("keeps the latest optimistic draft when an older write finishes", () => { vi.stubGlobal("window", {}); const initial = { relativePath: "convex.json", contents: '{"nodeVersion":"20"}', byteLength: 20, truncated: false, } satisfies ProjectReadFileResult; setProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"220"}'); setProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"22"}'); expect(getOptimisticProjectFileQueryData(environmentId, "/repo", "convex.json")?.contents).toBe( '{"nodeVersion":"22"}', ); expect( confirmProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"220"}'), ).toBe(false); expect(resolveProjectFileQueryData(environmentId, "/repo", "convex.json", initial)).toEqual({ relativePath: "convex.json", contents: '{"nodeVersion":"22"}', byteLength: 20, truncated: false, }); expect( confirmProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"22"}'), ).toBe(true); });});
import type { ProjectReadFileResult } from "@t3tools/contracts";
import { EnvironmentId } from "@t3tools/contracts";
import { afterEach, describe, expect, it, vi } from "vite-plus/test";
import {
clearProjectFileQueryData,
confirmProjectFileQueryData,
getOptimisticProjectFileQueryData,
resolveProjectFileQueryData,
setProjectFileQueryData,
} from "./projectFilesQueryState";
const environmentId = EnvironmentId.make("environment-project-files-query-test");
describe("project files queries", () => {
afterEach(() => {
clearProjectFileQueryData(environmentId, "/repo", "convex.json");
vi.unstubAllGlobals();
});
it("keeps the latest optimistic draft when an older write finishes", () => {
vi.stubGlobal("window", {});
const initial = {
relativePath: "convex.json",
contents: '{"nodeVersion":"20"}',
byteLength: 20,
truncated: false,
} satisfies ProjectReadFileResult;
setProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"220"}');
setProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"22"}');
expect(getOptimisticProjectFileQueryData(environmentId, "/repo", "convex.json")?.contents).toBe(
'{"nodeVersion":"22"}',
);
expect(
confirmProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"220"}'),
).toBe(false);
expect(resolveProjectFileQueryData(environmentId, "/repo", "convex.json", initial)).toEqual({
relativePath: "convex.json",
contents: '{"nodeVersion":"22"}',
byteLength: 20,
truncated: false,
});
expect(
confirmProjectFileQueryData(environmentId, "/repo", "convex.json", '{"nodeVersion":"22"}'),
).toBe(true);
});
});