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
97 lines
3.3 KiB
Swift
97 lines
3.3 KiB
Swift
//
|
|
// SearchFiltersTests.swift
|
|
// RSSuperTests
|
|
//
|
|
// Created by Mike Freno on 3/29/26.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import RSSuper
|
|
|
|
final class SearchFiltersTests: XCTestCase {
|
|
|
|
func testSearchFiltersEncodingDecoding() throws {
|
|
let filters = SearchFilters(
|
|
dateFrom: Date(timeIntervalSince1970: 1609459200),
|
|
dateTo: Date(timeIntervalSince1970: 1609545600),
|
|
feedIds: ["feed-1", "feed-2"],
|
|
authors: ["Author 1", "Author 2"],
|
|
contentType: .audio
|
|
)
|
|
|
|
let data = try JSONEncoder().encode(filters)
|
|
let decoded = try JSONDecoder().decode(SearchFilters.self, from: data)
|
|
|
|
XCTAssertEqual(decoded.dateFrom, filters.dateFrom)
|
|
XCTAssertEqual(decoded.dateTo, filters.dateTo)
|
|
XCTAssertEqual(decoded.feedIds, filters.feedIds)
|
|
XCTAssertEqual(decoded.authors, filters.authors)
|
|
XCTAssertEqual(decoded.contentType, filters.contentType)
|
|
}
|
|
|
|
func testSearchFiltersEmpty() throws {
|
|
let filters = SearchFilters()
|
|
|
|
XCTAssertNil(filters.dateFrom)
|
|
XCTAssertNil(filters.dateTo)
|
|
XCTAssertNil(filters.feedIds)
|
|
XCTAssertNil(filters.authors)
|
|
XCTAssertNil(filters.contentType)
|
|
|
|
let data = try JSONEncoder().encode(filters)
|
|
let decoded = try JSONDecoder().decode(SearchFilters.self, from: data)
|
|
|
|
XCTAssertNil(decoded.dateFrom)
|
|
XCTAssertNil(decoded.feedIds)
|
|
}
|
|
|
|
func testSearchFiltersEquality() {
|
|
let filters1 = SearchFilters(
|
|
feedIds: ["feed-1"],
|
|
authors: ["Author 1"]
|
|
)
|
|
|
|
let filters2 = SearchFilters(
|
|
feedIds: ["feed-1"],
|
|
authors: ["Author 1"]
|
|
)
|
|
|
|
let filters3 = SearchFilters(
|
|
feedIds: ["feed-2"],
|
|
authors: ["Author 2"]
|
|
)
|
|
|
|
XCTAssertEqual(filters1, filters2)
|
|
XCTAssertNotEqual(filters1, filters3)
|
|
}
|
|
|
|
func testSearchSortOptionLocalizedDescription() {
|
|
XCTAssertEqual(SearchSortOption.relevance.localizedDescription, "Relevance")
|
|
XCTAssertEqual(SearchSortOption.dateDesc.localizedDescription, "Date (Newest First)")
|
|
XCTAssertEqual(SearchSortOption.dateAsc.localizedDescription, "Date (Oldest First)")
|
|
XCTAssertEqual(SearchSortOption.titleAsc.localizedDescription, "Title (A-Z)")
|
|
XCTAssertEqual(SearchSortOption.titleDesc.localizedDescription, "Title (Z-A)")
|
|
XCTAssertEqual(SearchSortOption.feedAsc.localizedDescription, "Feed (A-Z)")
|
|
XCTAssertEqual(SearchSortOption.feedDesc.localizedDescription, "Feed (Z-A)")
|
|
}
|
|
|
|
func testContentTypeLocalizedDescription() {
|
|
XCTAssertEqual(ContentType.article.localizedDescription, "Article")
|
|
XCTAssertEqual(ContentType.audio.localizedDescription, "Audio")
|
|
XCTAssertEqual(ContentType.video.localizedDescription, "Video")
|
|
}
|
|
|
|
func testSearchFiltersDebugDescription() {
|
|
let filters = SearchFilters(
|
|
dateFrom: Date(timeIntervalSince1970: 1609459200),
|
|
feedIds: ["feed-1", "feed-2"],
|
|
contentType: .video
|
|
)
|
|
|
|
let debugDesc = filters.debugDescription
|
|
XCTAssertTrue(debugDesc.contains("feed-1"))
|
|
XCTAssertTrue(debugDesc.contains("feed-2"))
|
|
XCTAssertTrue(debugDesc.contains("Video"))
|
|
}
|
|
}
|