import OpenClawKit import Foundation import Testing @Suite struct ShareToAgentDeepLinkTests { @Test func buildMessageIncludesSharedFields() { let payload = SharedContentPayload( title: "Article", url: URL(string: "https://example.com/post")!, text: "Read this") let message = ShareToAgentDeepLink.buildMessage( from: payload, instruction: "Summarize and give next steps.") #expect(message.contains("Shared from iOS.")) #expect(message.contains("Title: Article")) #expect(message.contains("URL: https://example.com/post")) #expect(message.contains("Text:\nRead this")) #expect(message.contains("Summarize and give next steps.")) } @Test func buildURLEncodesAgentRoute() { let payload = SharedContentPayload( title: "", url: URL(string: "https://example.com")!, text: nil) let url = ShareToAgentDeepLink.buildURL(from: payload) let parsed = url.flatMap { DeepLinkParser.parse($0) } guard case let .agent(agent)? = parsed else { Issue.record("Expected openclaw://agent deep link") return } #expect(agent.thinking == "low") #expect(agent.message.contains("https://example.com")) } @Test func buildURLReturnsNilWhenPayloadEmpty() { let payload = SharedContentPayload(title: nil, url: nil, text: nil) #expect(ShareToAgentDeepLink.buildURL(from: payload) == nil) } @Test func shareInstructionSettingsRoundTrip() { let value = "Focus on booking constraints and alternatives." ShareToAgentSettings.saveDefaultInstruction(value) defer { ShareToAgentSettings.saveDefaultInstruction(nil) } #expect(ShareToAgentSettings.loadDefaultInstruction() == value) } }