1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package hexaiaction
import (
"context"
"strings"
"testing"
"codeberg.org/snonux/hexai/internal/appconfig"
"codeberg.org/snonux/hexai/internal/llm"
)
type fakeDoer struct{ out string }
func (f fakeDoer) Chat(_ context.Context, _ []llm.Message, _ ...llm.RequestOption) (string, error) {
return f.out, nil
}
func (f fakeDoer) DefaultModel() string { return "m" }
func TestExecuteAction_Skip(t *testing.T) {
cfg := appconfig.App{}
parts := InputParts{Selection: "data"}
out, err := executeAction(context.Background(), ActionSkip, parts, &cfg, fakeDoer{"IGN"}, nil, nil)
if err != nil || out != "data" {
t.Fatalf("skip failed: %q %v", out, err)
}
}
func TestExecuteAction_Rewrite_Document_GoTest(t *testing.T) {
cfg := appconfig.Load(nil) // defaults
// Use fenced output to exercise StripFences
client := fakeDoer{"```\nDONE\n```"}
// rewrite with inline instruction
sel := ";change;\ncode"
out, err := executeAction(context.Background(), ActionRewrite, InputParts{Selection: sel}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("rewrite failed: %q %v", out, err)
}
// document
out, err = executeAction(context.Background(), ActionDocument, InputParts{Selection: "code"}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("document failed: %q %v", out, err)
}
// go test
out, err = executeAction(context.Background(), ActionGoTest, InputParts{Selection: "func A(){}"}, &cfg, client, nil, nil)
if err != nil || strings.TrimSpace(out) != "DONE" {
t.Fatalf("gotest failed: %q %v", out, err)
}
}
|