| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { afterEach, describe, expect, test } from "bun:test"
- import path from "path"
- import { Server } from "../../src/server/server"
- import { Global } from "@kirincode-ai/core/global"
- import { resetDatabase } from "../fixture/db"
- import { disposeAllInstances, tmpdir } from "../fixture/fixture"
- import { Effect } from "effect"
- import { pollWithTimeout } from "../lib/effect"
- afterEach(async () => {
- await disposeAllInstances()
- await resetDatabase()
- })
- describe("reference HttpApi", () => {
- test("lists usable references resolved in the server workspace", async () => {
- await using tmp = await tmpdir({
- config: {
- formatter: false,
- lsp: false,
- references: {
- docs: "./docs",
- effect: { repository: "Effect-TS/effect", branch: "main" },
- bad: "not-a-repo",
- },
- },
- })
- const body = await Effect.runPromise(
- pollWithTimeout(
- Effect.promise(async () => {
- const response = await Server.Default().app.request("/api/reference", {
- headers: { "x-opencode-directory": tmp.path },
- })
- expect(response.status).toBe(200)
- const body = await response.json()
- return body.data.length === 0 ? undefined : body
- }),
- "references were not loaded",
- ),
- )
- expect(body).toMatchObject({ location: { directory: tmp.path } })
- expect(body.data).toEqual([
- {
- name: "docs",
- path: path.join(tmp.path, "docs"),
- source: {
- type: "local",
- path: path.join(tmp.path, "docs"),
- },
- },
- {
- name: "effect",
- path: path.join(Global.Path.repos, "github.com", "Effect-TS", "effect"),
- source: {
- type: "git",
- repository: "Effect-TS/effect",
- branch: "main",
- },
- },
- ])
- })
- })
|