Files
RSSuper/iOS/RSSuperTests/SyncSchedulerTests.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

77 lines
2.6 KiB
Swift

import XCTest
@testable import RSSuper
/// Unit tests for SyncScheduler
final class SyncSchedulerTests: XCTestCase {
private var scheduler: SyncScheduler!
override func setUp() {
super.setUp()
scheduler = SyncScheduler()
}
override func tearDown() {
scheduler = nil
super.tearDown()
}
func testDefaultSyncInterval() {
XCTAssertEqual(scheduler.preferredSyncInterval, SyncScheduler.defaultSyncInterval)
}
func testSyncIntervalClamping() {
// Test minimum clamping
scheduler.preferredSyncInterval = 60 // 1 minute
XCTAssertEqual(scheduler.preferredSyncInterval, SyncScheduler.minimumSyncInterval)
// Test maximum clamping
scheduler.preferredSyncInterval = 48 * 3600 // 48 hours
XCTAssertEqual(scheduler.preferredSyncInterval, SyncScheduler.maximumSyncInterval)
}
func testIsSyncDue() {
// Fresh scheduler should have sync due
XCTAssertTrue(scheduler.isSyncDue)
// Set last sync date to recent past
scheduler.lastSyncDate = Date().addingTimeInterval(-1 * 3600) // 1 hour ago
XCTAssertFalse(scheduler.isSyncDue)
// Set last sync date to far past
scheduler.lastSyncDate = Date().addingTimeInterval(-12 * 3600) // 12 hours ago
XCTAssertTrue(scheduler.isSyncDue)
}
func testTimeSinceLastSync() {
scheduler.lastSyncDate = Date().addingTimeInterval(-3600) // 1 hour ago
let timeSince = scheduler.timeSinceLastSync
XCTAssertGreaterThan(timeSince, 3500)
XCTAssertLessThan(timeSince, 3700)
}
func testResetSyncSchedule() {
scheduler.preferredSyncInterval = 12 * 3600
scheduler.lastSyncDate = Date().addingTimeInterval(-100)
scheduler.resetSyncSchedule()
XCTAssertEqual(scheduler.preferredSyncInterval, SyncScheduler.defaultSyncInterval)
XCTAssertNil(scheduler.lastSyncDate)
}
func testUserActivityLevelCalculation() {
// High activity
XCTAssertEqual(UserActivityLevel.calculate(from: 5, lastOpenedAgo: 3600), .high)
XCTAssertEqual(UserActivityLevel.calculate(from: 1, lastOpenedAgo: 60), .high)
// Medium activity
XCTAssertEqual(UserActivityLevel.calculate(from: 2, lastOpenedAgo: 3600), .medium)
XCTAssertEqual(UserActivityLevel.calculate(from: 0, lastOpenedAgo: 43200), .medium)
// Low activity
XCTAssertEqual(UserActivityLevel.calculate(from: 0, lastOpenedAgo: 172800), .low)
}
}