71 lines · 2.1 KB · TypeScript
RawDownload
import { describe, expect, test } from "bun:test"import path from "path"import { Session } from "../../src/session"import { Bus } from "../../src/bus"import { Log } from "../../src/util/log"import { Instance } from "../../src/project/instance" const projectRoot = path.join(__dirname, "../..")Log.init({ print: false }) describe("session.started event", () => {  test("should emit session.started event when session is created", async () => {    await Instance.provide({      directory: projectRoot,      fn: async () => {        let eventReceived = false        let receivedInfo: Session.Info | undefined         const unsub = Bus.subscribe(Session.Event.Created, (event) => {          eventReceived = true          receivedInfo = event.properties.info as Session.Info        })         const session = await Session.create({})         await new Promise((resolve) => setTimeout(resolve, 100))         unsub()         expect(eventReceived).toBe(true)        expect(receivedInfo).toBeDefined()        expect(receivedInfo?.id).toBe(session.id)        expect(receivedInfo?.projectID).toBe(session.projectID)        expect(receivedInfo?.directory).toBe(session.directory)        expect(receivedInfo?.title).toBe(session.title)         await Session.remove(session.id)      },    })  })   test("session.started event should be emitted before session.updated", async () => {    await Instance.provide({      directory: projectRoot,      fn: async () => {        const events: string[] = []         const unsubStarted = Bus.subscribe(Session.Event.Created, () => {          events.push("started")        })         const unsubUpdated = Bus.subscribe(Session.Event.Updated, () => {          events.push("updated")        })         const session = await Session.create({})         await new Promise((resolve) => setTimeout(resolve, 100))         unsubStarted()        unsubUpdated()         expect(events).toContain("started")        expect(events).toContain("updated")        expect(events.indexOf("started")).toBeLessThan(events.indexOf("updated"))         await Session.remove(session.id)      },    })  })})