Auto-commit 2026-03-30 16:30
This commit is contained in:
76
native-route/ios/RSSuperTests/SyncSchedulerTests.swift
Normal file
76
native-route/ios/RSSuperTests/SyncSchedulerTests.swift
Normal file
@@ -0,0 +1,76 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user