File size: 2,461 Bytes
3201ca6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | import { beforeEach, describe, expect, it } from "vitest";
import { useInitialQueryStore } from "#/stores/initial-query-store";
const emptyState = {
files: [],
initialPrompt: null,
selectedRepository: null,
selectedRepositoryProvider: null,
replayJson: null,
};
describe("useInitialQueryStore", () => {
beforeEach(() => {
useInitialQueryStore.getState().reset();
});
it("adds, removes, and clears files", () => {
const store = useInitialQueryStore.getState();
store.addFile("first");
store.addFile("second");
store.addFile("third");
expect(useInitialQueryStore.getState().files).toEqual([
"first",
"second",
"third",
]);
useInitialQueryStore.getState().removeFile(1);
expect(useInitialQueryStore.getState().files).toEqual(["first", "third"]);
useInitialQueryStore.getState().removeFile(99);
expect(useInitialQueryStore.getState().files).toEqual(["first", "third"]);
useInitialQueryStore.getState().clearFiles();
expect(useInitialQueryStore.getState().files).toEqual([]);
});
it("sets and clears prompt and repository selections", () => {
const repository = {
id: "repository-1",
full_name: "owner/repository",
git_provider: "github",
is_public: true,
} as const;
const store = useInitialQueryStore.getState();
store.setInitialPrompt("Build it");
store.setSelectedRepository(repository);
store.setSelectedRepositoryProvider("github");
store.setReplayJson('{"event":"message"}');
expect(useInitialQueryStore.getState()).toMatchObject({
initialPrompt: "Build it",
selectedRepository: repository,
selectedRepositoryProvider: "github",
replayJson: '{"event":"message"}',
});
useInitialQueryStore.getState().clearInitialPrompt();
useInitialQueryStore.getState().clearSelectedRepository();
useInitialQueryStore.getState().setSelectedRepositoryProvider(null);
useInitialQueryStore.getState().setReplayJson(null);
expect(useInitialQueryStore.getState()).toMatchObject(emptyState);
});
it("resets every field after populated state", () => {
const store = useInitialQueryStore.getState();
store.addFile("image");
store.setInitialPrompt("Prompt");
store.setSelectedRepositoryProvider("gitlab");
store.setReplayJson("{}");
useInitialQueryStore.getState().reset();
expect(useInitialQueryStore.getState()).toMatchObject(emptyState);
});
});
|