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);
  });
});