Julius Marmingedelegate trimming to schemae5542b78 months agoHistory
86 lines · 2.6 KB · TypeScript
RawDownload
import { assert, it } from "@effect/vitest";import { Effect, Schema } from "effect"; import {  OrchestrationGetTurnDiffInput,  ProjectCreateCommand,  ThreadTurnDiff,} from "./orchestration"; const decodeTurnDiffInput = Schema.decodeUnknownEffect(OrchestrationGetTurnDiffInput);const decodeThreadTurnDiff = Schema.decodeUnknownEffect(ThreadTurnDiff);const decodeProjectCreateCommand = Schema.decodeUnknownEffect(ProjectCreateCommand); it.effect("parses turn diff input when fromTurnCount <= toTurnCount", () =>  Effect.gen(function* () {    const parsed = yield* decodeTurnDiffInput({      threadId: "thread-1",      fromTurnCount: 1,      toTurnCount: 2,    });    assert.strictEqual(parsed.fromTurnCount, 1);    assert.strictEqual(parsed.toTurnCount, 2);  }),); it.effect("rejects turn diff input when fromTurnCount > toTurnCount", () =>  Effect.gen(function* () {    const result = yield* Effect.exit(      decodeTurnDiffInput({        threadId: "thread-1",        fromTurnCount: 3,        toTurnCount: 2,      }),    );    assert.strictEqual(result._tag, "Failure");  }),); it.effect("rejects thread turn diff when fromTurnCount > toTurnCount", () =>  Effect.gen(function* () {    const result = yield* Effect.exit(      decodeThreadTurnDiff({        threadId: "thread-1",        fromTurnCount: 3,        toTurnCount: 2,        diff: "patch",      }),    );    assert.strictEqual(result._tag, "Failure");  }),); it.effect("trims branded ids and command string fields at decode boundaries", () =>  Effect.gen(function* () {    const parsed = yield* decodeProjectCreateCommand({      type: "project.create",      commandId: " cmd-1 ",      projectId: " project-1 ",      title: " Project Title ",      workspaceRoot: " /tmp/workspace ",      defaultModel: " gpt-5.2 ",      createdAt: "2026-01-01T00:00:00.000Z",    });    assert.strictEqual(parsed.commandId, "cmd-1");    assert.strictEqual(parsed.projectId, "project-1");    assert.strictEqual(parsed.title, "Project Title");    assert.strictEqual(parsed.workspaceRoot, "/tmp/workspace");    assert.strictEqual(parsed.defaultModel, "gpt-5.2");  }),); it.effect("rejects command fields that become empty after trim", () =>  Effect.gen(function* () {    const result = yield* Effect.exit(      decodeProjectCreateCommand({        type: "project.create",        commandId: "cmd-1",        projectId: "project-1",        title: "  ",        workspaceRoot: "/tmp/workspace",        createdAt: "2026-01-01T00:00:00.000Z",      }),    );    assert.strictEqual(result._tag, "Failure");  }),);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t