86 lines · 2.1 KB · TypeScript
RawDownload
import { describe, expect, it } from "@effect/vitest";import * as Effect from "effect/Effect"; import {  SourceIdSchema,  WorkspaceIdSchema,  type Source,} from "#schema"; import type { LoadedLocalExecutorConfig } from "./local-config";import { buildLocalSourceRecord } from "./source-store";import type { LocalWorkspaceState } from "./local-workspace-state"; const workspaceId = WorkspaceIdSchema.make("ws_source_store");const sourceId = SourceIdSchema.make("linear"); const loadedConfig: LoadedLocalExecutorConfig = {  config: {    sources: {      [sourceId]: {        kind: "graphql",        name: "Linear GraphQL",        namespace: "linear",        connection: {          endpoint: "https://api.linear.app/graphql",        },        binding: {          defaultHeaders: null,        },      },    },  },  homeConfig: null,  projectConfig: null,  homeConfigPath: "/tmp/home-config.jsonc",  projectConfigPath: "/tmp/project-config.jsonc",}; const workspaceState: LocalWorkspaceState = {  version: 1,  sources: {    [sourceId]: {      status: "connected",      lastError: null,      sourceHash: "hash_linear",      createdAt: 1000,      updatedAt: 2000,    },  },  policies: {},}; describe("source-store", () => {  it.effect("projects configured sources without reading local artifacts", () =>    Effect.gen(function* () {      const result = yield* buildLocalSourceRecord({        workspaceId,        loadedConfig,        workspaceState,        sourceId,        authArtifacts: [],      });       expect(result.source).toEqual({        id: sourceId,        workspaceId,        name: "Linear GraphQL",        kind: "graphql",        endpoint: "https://api.linear.app/graphql",        status: "connected",        enabled: true,        namespace: "linear",        bindingVersion: 1,        binding: {          defaultHeaders: null,        },        importAuthPolicy: "reuse_runtime",        importAuth: { kind: "none" },        auth: { kind: "none" },        sourceHash: "hash_linear",        lastError: null,        createdAt: 1000,        updatedAt: 2000,      } satisfies Source);    }));});