mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-23 02:36:57 -04:00
46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
import { expect } from "bun:test"
|
|
import { Effect } from "effect"
|
|
import { it } from "../../core/test/lib/effect"
|
|
import { Status } from "../src/service-status"
|
|
|
|
it.effect("moves from starting to ready", () =>
|
|
Effect.gen(function* () {
|
|
const status = yield* Status.make({ instanceID: "one", managed: false })
|
|
expect(yield* status.current).toEqual({ type: "starting" })
|
|
yield* status.ready
|
|
expect(yield* status.current).toEqual({ type: "ready" })
|
|
}),
|
|
)
|
|
|
|
it.effect("keeps a startup failure until shutdown", () =>
|
|
Effect.gen(function* () {
|
|
const status = yield* Status.make({ instanceID: "one", managed: true })
|
|
yield* status.fail
|
|
yield* status.ready
|
|
yield* status.fail
|
|
expect(yield* status.current).toEqual({ type: "failed" })
|
|
}),
|
|
)
|
|
|
|
it.effect("stops only the addressed managed instance", () =>
|
|
Effect.gen(function* () {
|
|
const status = yield* Status.make({ instanceID: "one", managed: true })
|
|
|
|
expect(yield* status.requestStop({ instanceID: "other" })).toBe(false)
|
|
expect(yield* status.current).toEqual({ type: "starting" })
|
|
expect(yield* status.requestStop({ instanceID: "one" })).toBe(true)
|
|
expect(yield* status.current).toEqual({ type: "stopping" })
|
|
}),
|
|
)
|
|
|
|
it.effect("keeps stopping after shutdown begins", () =>
|
|
Effect.gen(function* () {
|
|
const status = yield* Status.make({ instanceID: "one", managed: true })
|
|
|
|
yield* status.beginStopping
|
|
expect(yield* status.current).toEqual({ type: "stopping" })
|
|
expect(yield* status.requestStop({ instanceID: "one" })).toBe(true)
|
|
expect(yield* status.current).toEqual({ type: "stopping" })
|
|
}),
|
|
)
|