| 1 | package control |
| 2 | |
| 3 | import ( |
| 4 | "testing" |
| 5 | |
| 6 | "reasonix/internal/command" |
| 7 | ) |
| 8 | |
| 9 | func TestClassifySubmitRouteSeparatesManagementFromTurns(t *testing.T) { |
| 10 | c := newOwnedTestController(t, Options{Commands: []command.Command{{Name: "review", Body: "review: $ARGUMENTS"}}}) |
| 11 | tests := []struct { |
| 12 | input string |
| 13 | want SubmitDisposition |
| 14 | }{ |
| 15 | {input: "/compact", want: SubmitManagementHandled}, |
| 16 | {input: "/compact keep the test plan", want: SubmitManagementHandled}, |
| 17 | {input: "/new", want: SubmitManagementHandled}, |
| 18 | {input: "/context", want: SubmitManagementHandled}, |
| 19 | {input: "/model", want: SubmitManagementHandled}, |
| 20 | {input: "/provider deepseek", want: SubmitManagementHandled}, |
| 21 | {input: "/memory recall", want: SubmitManagementHandled}, |
| 22 | {input: "/remember keep this", want: SubmitManagementHandled}, |
| 23 | {input: "# keep this", want: SubmitManagementHandled}, |
| 24 | {input: "/goal status", want: SubmitManagementHandled}, |
| 25 | {input: "/goal pause", want: SubmitManagementHandled}, |
| 26 | {input: "/docs", want: SubmitManagementHandled}, |
| 27 | {input: "/plan-exec", want: SubmitManagementHandled}, |
| 28 | {input: "/prometheus", want: SubmitManagementHandled}, |
| 29 | {input: "/compactly", want: SubmitTurnStarted}, |
| 30 | {input: "review the diff", want: SubmitTurnStarted}, |
| 31 | {input: "/goal ship the fix", want: SubmitTurnStarted}, |
| 32 | {input: "/docs explain compaction", want: SubmitTurnStarted}, |
| 33 | {input: "/prometheus ship the fix", want: SubmitTurnStarted}, |
| 34 | {input: "/review the diff", want: SubmitTurnStarted}, |
| 35 | } |
| 36 | for _, tt := range tests { |
| 37 | t.Run(tt.input, func(t *testing.T) { |
| 38 | if got := c.ClassifySubmitRoute(tt.input); got != tt.want { |
| 39 | t.Fatalf("ClassifySubmitRoute(%q) = %q, want %q", tt.input, got, tt.want) |
| 40 | } |
| 41 | }) |
| 42 | } |
| 43 | } |
| 44 | |
| 45 | func TestManagementNoticeLeavesTurnOwnedCommandsUnclaimed(t *testing.T) { |
| 46 | c := newOwnedTestController(t, Options{Commands: []command.Command{{Name: "review", Body: "review: $ARGUMENTS"}}}) |
| 47 | for _, input := range []string{"/unknown", "/review inspect", "/compactly"} { |
| 48 | if c.managementNotice(input) { |
| 49 | t.Fatalf("managementNotice(%q) claimed a turn-owned command", input) |
| 50 | } |
| 51 | } |
| 52 | } |
| 53 |