44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, mock } from "bun:test"
|
|
import { Effect } from "effect"
|
|
import { Server } from "../../src/server/server"
|
|
import { Session as SessionNs } from "@/session/session"
|
|
import * as Log from "@opencode-ai/core/util/log"
|
|
import { disposeAllInstances, TestInstance } from "../fixture/fixture"
|
|
import { testEffect } from "../lib/effect"
|
|
|
|
void Log.init({ print: false })
|
|
|
|
const it = testEffect(SessionNs.defaultLayer)
|
|
|
|
afterEach(async () => {
|
|
mock.restore()
|
|
await disposeAllInstances()
|
|
})
|
|
|
|
describe("session action routes", () => {
|
|
it.instance(
|
|
"abort route returns success",
|
|
() =>
|
|
Effect.gen(function* () {
|
|
const test = yield* TestInstance
|
|
const session = yield* Effect.acquireRelease(
|
|
SessionNs.Service.use((svc) => svc.create({})),
|
|
(created) => SessionNs.Service.use((svc) => svc.remove(created.id)).pipe(Effect.ignore),
|
|
)
|
|
|
|
const res = yield* Effect.promise(() =>
|
|
Promise.resolve(
|
|
Server.Default().app.request(`/session/${session.id}/abort`, {
|
|
method: "POST",
|
|
headers: { "x-opencode-directory": test.directory },
|
|
}),
|
|
),
|
|
)
|
|
|
|
expect(res.status).toBe(200)
|
|
expect(yield* Effect.promise(() => res.json())).toBe(true)
|
|
}),
|
|
{ git: true },
|
|
)
|
|
})
|