Some checks failed
CI - Multi-Platform Native / Build iOS (RSSuper) (push) Has been cancelled
CI - Multi-Platform Native / Build macOS (push) Has been cancelled
CI - Multi-Platform Native / Build Android (push) Has been cancelled
CI - Multi-Platform Native / Build Linux (push) Has been cancelled
CI - Multi-Platform Native / Build Summary (push) Has been cancelled
90 lines
3.0 KiB
Swift
90 lines
3.0 KiB
Swift
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)
|
|
}
|
|
}
|