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