Co-authored-by: LukeParkerDev <10430890+Hona@users.noreply.github.com>
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { expect, test } from "bun:test"
|
|
import { SESSION_TABS_REMOVED_EVENT, readSessionTabsRemovedDetail } from "@/components/titlebar-session-events"
|
|
import { archiveHomeSession } from "./home-session-archive"
|
|
import type { ServerConnection } from "@/context/server"
|
|
|
|
const remote = "remote" as ServerConnection.Key
|
|
|
|
test("archiving a Home session removes its open titlebar tab", async () => {
|
|
let detail: ReturnType<typeof readSessionTabsRemovedDetail>
|
|
let removed = false
|
|
window.addEventListener(
|
|
SESSION_TABS_REMOVED_EVENT,
|
|
(event) => {
|
|
detail = readSessionTabsRemovedDetail(event)
|
|
},
|
|
{ once: true },
|
|
)
|
|
|
|
await archiveHomeSession({
|
|
server: remote,
|
|
session: { id: "ses_1", directory: "/workspace" },
|
|
update: async () => undefined,
|
|
remove: () => {
|
|
removed = true
|
|
},
|
|
})
|
|
|
|
expect(removed).toBe(true)
|
|
expect(detail).toEqual({ server: remote, directory: "/workspace", sessionIDs: ["ses_1"] })
|
|
})
|
|
|
|
test("reports archive failures without removing the session", async () => {
|
|
const failure = new Error("offline")
|
|
let error: unknown
|
|
let removed = false
|
|
|
|
await archiveHomeSession({
|
|
server: remote,
|
|
session: { id: "ses_1", directory: "/workspace" },
|
|
update: async () => Promise.reject(failure),
|
|
remove: () => {
|
|
removed = true
|
|
},
|
|
onError: (value) => {
|
|
error = value
|
|
},
|
|
})
|
|
|
|
expect(error).toBe(failure)
|
|
expect(removed).toBe(false)
|
|
})
|