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); }));});
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);
}));
});