/ internal / tools / applescript_test.go
applescript_test.go
 1  package tools
 2  
 3  import (
 4  	"context"
 5  	"runtime"
 6  	"testing"
 7  )
 8  
 9  func TestAppleScript_Info(t *testing.T) {
10  	tool := &AppleScriptTool{}
11  	info := tool.Info()
12  	if info.Name != "applescript" {
13  		t.Errorf("expected name 'applescript', got %q", info.Name)
14  	}
15  	if len(info.Required) != 1 || info.Required[0] != "script" {
16  		t.Errorf("expected required [script], got %v", info.Required)
17  	}
18  }
19  
20  func TestAppleScript_InvalidArgs(t *testing.T) {
21  	tool := &AppleScriptTool{}
22  	result, err := tool.Run(context.Background(), `not valid json`)
23  	if err != nil {
24  		t.Fatalf("unexpected error: %v", err)
25  	}
26  	if !result.IsError {
27  		t.Error("expected error result for invalid JSON")
28  	}
29  }
30  
31  func TestAppleScript_SimpleScript(t *testing.T) {
32  	if runtime.GOOS != "darwin" {
33  		t.Skip("applescript tests require macOS")
34  	}
35  	tool := &AppleScriptTool{}
36  	result, err := tool.Run(context.Background(), `{"script": "return 1 + 1"}`)
37  	if err != nil {
38  		t.Fatalf("unexpected error: %v", err)
39  	}
40  	if result.IsError {
41  		t.Fatalf("unexpected error result: %s", result.Content)
42  	}
43  	if !contains(result.Content, "2") {
44  		t.Errorf("expected '2' in output, got: %s", result.Content)
45  	}
46  }
47  
48  func TestAppleScript_InvalidScript(t *testing.T) {
49  	if runtime.GOOS != "darwin" {
50  		t.Skip("applescript tests require macOS")
51  	}
52  	tool := &AppleScriptTool{}
53  	result, err := tool.Run(context.Background(), `{"script": "this is not valid applescript code!!!"}`)
54  	if err != nil {
55  		t.Fatalf("unexpected error: %v", err)
56  	}
57  	if !result.IsError {
58  		t.Error("expected error result for invalid script")
59  	}
60  }
61  
62  func TestAppleScript_RequiresApproval(t *testing.T) {
63  	tool := &AppleScriptTool{}
64  	if !tool.RequiresApproval() {
65  		t.Error("expected RequiresApproval to return true")
66  	}
67  }