| import { describe, expect } from "bun:test" |
| import { Effect } from "effect" |
| import { CommandV2 } from "@opencode-ai/core/command" |
| import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder" |
| import { ModelV2 } from "@opencode-ai/core/model" |
| import { ProviderV2 } from "@opencode-ai/core/provider" |
| import { testEffect } from "./lib/effect" |
|
|
| const it = testEffect(AppNodeBuilder.build(CommandV2.node)) |
|
|
| describe("CommandV2", () => { |
| it.effect("applies command transforms and preserves later overrides", () => |
| Effect.gen(function* () { |
| const command = yield* CommandV2.Service |
| yield* command.transform((editor) => { |
| editor.update("review", (command) => { |
| command.template = "First" |
| command.description = "Review code" |
| }) |
| editor.update("review", (command) => { |
| command.template = "Second" |
| command.model = { |
| id: ModelV2.ID.make("claude"), |
| providerID: ProviderV2.ID.make("anthropic"), |
| variant: ModelV2.VariantID.make("high"), |
| } |
| }) |
| }) |
|
|
| expect(yield* command.get("review")).toEqual( |
| CommandV2.Info.make({ |
| name: "review", |
| template: "Second", |
| description: "Review code", |
| model: { |
| id: ModelV2.ID.make("claude"), |
| providerID: ProviderV2.ID.make("anthropic"), |
| variant: ModelV2.VariantID.make("high"), |
| }, |
| }), |
| ) |
| expect(yield* command.list()).toEqual([ |
| CommandV2.Info.make({ |
| name: "review", |
| template: "Second", |
| description: "Review code", |
| model: { |
| id: ModelV2.ID.make("claude"), |
| providerID: ProviderV2.ID.make("anthropic"), |
| variant: ModelV2.VariantID.make("high"), |
| }, |
| }), |
| ]) |
| }), |
| ) |
| }) |
|
|