summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/pages/layout/sidebar-project-helpers.test.ts
blob: 75958d49e920508076e6da92390d37d67c9e1cb6 (plain)
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
import { describe, expect, test } from "bun:test"
import { projectSelected, projectTileActive } from "./sidebar-project-helpers"

describe("projectSelected", () => {
  test("matches direct worktree", () => {
    expect(projectSelected("/tmp/root", "/tmp/root")).toBe(true)
  })

  test("matches sandbox worktree", () => {
    expect(projectSelected("/tmp/branch", "/tmp/root", ["/tmp/branch"])).toBe(true)
    expect(projectSelected("/tmp/other", "/tmp/root", ["/tmp/branch"])).toBe(false)
  })
})

describe("projectTileActive", () => {
  test("menu state always wins", () => {
    expect(
      projectTileActive({
        menu: true,
        preview: false,
        open: false,
        overlay: false,
        worktree: "/tmp/root",
      }),
    ).toBe(true)
  })

  test("preview mode uses open state", () => {
    expect(
      projectTileActive({
        menu: false,
        preview: true,
        open: true,
        overlay: true,
        hoverProject: "/tmp/other",
        worktree: "/tmp/root",
      }),
    ).toBe(true)
  })

  test("overlay mode uses hovered project", () => {
    expect(
      projectTileActive({
        menu: false,
        preview: false,
        open: false,
        overlay: true,
        hoverProject: "/tmp/root",
        worktree: "/tmp/root",
      }),
    ).toBe(true)
    expect(
      projectTileActive({
        menu: false,
        preview: false,
        open: false,
        overlay: true,
        hoverProject: "/tmp/other",
        worktree: "/tmp/root",
      }),
    ).toBe(false)
  })
})