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 }