77 lines
2.6 KiB
Swift
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)
|
|
}
|
|
}
|