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
103 lines
3.2 KiB
Swift
103 lines
3.2 KiB
Swift
//
|
|
// NotificationPreferencesTests.swift
|
|
// RSSuperTests
|
|
//
|
|
// Created by Mike Freno on 3/29/26.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import RSSuper
|
|
|
|
final class NotificationPreferencesTests: XCTestCase {
|
|
|
|
func testNotificationPreferencesEncodingDecoding() throws {
|
|
let prefs = NotificationPreferences(
|
|
newArticles: true,
|
|
episodeReleases: false,
|
|
customAlerts: true,
|
|
badgeCount: true,
|
|
sound: false,
|
|
vibration: true
|
|
)
|
|
|
|
let data = try JSONEncoder().encode(prefs)
|
|
let decoded = try JSONDecoder().decode(NotificationPreferences.self, from: data)
|
|
|
|
XCTAssertEqual(decoded.newArticles, prefs.newArticles)
|
|
XCTAssertEqual(decoded.episodeReleases, prefs.episodeReleases)
|
|
XCTAssertEqual(decoded.customAlerts, prefs.customAlerts)
|
|
XCTAssertEqual(decoded.badgeCount, prefs.badgeCount)
|
|
XCTAssertEqual(decoded.sound, prefs.sound)
|
|
XCTAssertEqual(decoded.vibration, prefs.vibration)
|
|
}
|
|
|
|
func testNotificationPreferencesDefaults() {
|
|
let prefs = NotificationPreferences()
|
|
|
|
XCTAssertEqual(prefs.newArticles, true)
|
|
XCTAssertEqual(prefs.episodeReleases, true)
|
|
XCTAssertEqual(prefs.customAlerts, false)
|
|
XCTAssertEqual(prefs.badgeCount, true)
|
|
XCTAssertEqual(prefs.sound, true)
|
|
XCTAssertEqual(prefs.vibration, true)
|
|
}
|
|
|
|
func testNotificationPreferencesAllEnabled() {
|
|
let allEnabled = NotificationPreferences(
|
|
newArticles: true,
|
|
episodeReleases: true,
|
|
customAlerts: true,
|
|
badgeCount: true,
|
|
sound: true,
|
|
vibration: true
|
|
)
|
|
|
|
XCTAssertTrue(allEnabled.allEnabled)
|
|
}
|
|
|
|
func testNotificationPreferencesAnyEnabled() {
|
|
let noneEnabled = NotificationPreferences(
|
|
newArticles: false,
|
|
episodeReleases: false,
|
|
customAlerts: false,
|
|
badgeCount: false,
|
|
sound: false,
|
|
vibration: false
|
|
)
|
|
|
|
XCTAssertFalse(noneEnabled.anyEnabled)
|
|
|
|
let someEnabled = NotificationPreferences(
|
|
newArticles: true,
|
|
episodeReleases: false,
|
|
customAlerts: false,
|
|
badgeCount: false,
|
|
sound: false,
|
|
vibration: false
|
|
)
|
|
|
|
XCTAssertTrue(someEnabled.anyEnabled)
|
|
}
|
|
|
|
func testNotificationPreferencesEquality() {
|
|
let prefs1 = NotificationPreferences(newArticles: true, episodeReleases: false)
|
|
let prefs2 = NotificationPreferences(newArticles: true, episodeReleases: false)
|
|
let prefs3 = NotificationPreferences(newArticles: false, episodeReleases: true)
|
|
|
|
XCTAssertEqual(prefs1, prefs2)
|
|
XCTAssertNotEqual(prefs1, prefs3)
|
|
}
|
|
|
|
func testNotificationPreferencesDebugDescription() {
|
|
let prefs = NotificationPreferences(
|
|
newArticles: true,
|
|
episodeReleases: false,
|
|
customAlerts: true
|
|
)
|
|
|
|
let debugDesc = prefs.debugDescription
|
|
XCTAssertTrue(debugDesc.contains("true"))
|
|
XCTAssertTrue(debugDesc.contains("false"))
|
|
}
|
|
}
|