Files
RSSuper/iOS/RSSuperTests/SearchFiltersTests.swift
Michael Freno c2e1622bd8
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
restructure
2026-03-30 16:39:18 -04:00

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"))
}
}