import XCTest @testable import RSSuper /// Unit tests for SearchResult and related types final class SearchResultTests: XCTestCase { func testArticleResultCreation() { let result = SearchResult.article( id: "article-123", title: "Test Article", snippet: "This is a snippet", link: "https://example.com/article", feedTitle: "Test Feed", published: Date(), score: 0.95, author: "Test Author" ) XCTAssertEqual(result.id, "article-123") XCTAssertEqual(result.type, .article) XCTAssertEqual(result.title, "Test Article") XCTAssertEqual(result.snippet, "This is a snippet") XCTAssertEqual(result.link, "https://example.com/article") XCTAssertEqual(result.feedTitle, "Test Feed") XCTAssertEqual(result.score, 0.95) XCTAssertEqual(result.author, "Test Author") } func testFeedResultCreation() { let result = SearchResult.feed( id: "feed-456", title: "Test Feed", link: "https://example.com/feed.xml", score: 0.85 ) XCTAssertEqual(result.id, "feed-456") XCTAssertEqual(result.type, .feed) XCTAssertEqual(result.title, "Test Feed") XCTAssertEqual(result.link, "https://example.com/feed.xml") XCTAssertEqual(result.score, 0.85) } func testSuggestionResultCreation() { let result = SearchResult.suggestion( text: "swift programming", score: 0.75 ) XCTAssertEqual(result.type, .suggestion) XCTAssertEqual(result.title, "swift programming") XCTAssertEqual(result.score, 0.75) } func testSearchResultTypeEncoding() { XCTAssertEqual(SearchResultType.article.rawValue, "article") XCTAssertEqual(SearchResultType.feed.rawValue, "feed") XCTAssertEqual(SearchResultType.suggestion.rawValue, "suggestion") XCTAssertEqual(SearchResultType.tag.rawValue, "tag") XCTAssertEqual(SearchResultType.author.rawValue, "author") } func testSearchResultEquatable() { let result1 = SearchResult.article(id: "1", title: "Test") let result2 = SearchResult.article(id: "1", title: "Test") let result3 = SearchResult.article(id: "2", title: "Test") XCTAssertEqual(result1, result2) XCTAssertNotEqual(result1, result3) } func testSearchResults totalCount() { let results = SearchResults( articles: [SearchResult.article(id: "1", title: "A")], feeds: [SearchResult.feed(id: "2", title: "F")], suggestions: [] ) XCTAssertEqual(results.totalCount, 2) XCTAssertTrue(results.hasResults) } func testSearchResultsEmpty() { let results = SearchResults(articles: [], feeds: [], suggestions: []) XCTAssertEqual(results.totalCount, 0) XCTAssertFalse(results.hasResults) } }