BuildExpireConditionTests.swift 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // LoopFollow
  2. // BuildExpireConditionTests.swift
  3. // Created by Jonas Björkert on 2025-04-26.
  4. @testable import LoopFollow
  5. import XCTest
  6. final class BuildExpireConditionTests: XCTestCase {
  7. let cond = BuildExpireCondition()
  8. var alarm: Alarm!
  9. override func setUp() {
  10. super.setUp()
  11. alarm = Alarm(type: .buildExpire)
  12. alarm.threshold = 7 // 7 days before expiration
  13. }
  14. func testEvaluateWhenWithinThreshold() {
  15. let now = Date()
  16. // Build expires in 6 days → within threshold (7 days)
  17. let expiryDate = Calendar.current.date(byAdding: .day, value: 6, to: now)!
  18. let data = AlarmData(expireDate: expiryDate)
  19. XCTAssertTrue(cond.evaluate(alarm: alarm, data: data))
  20. }
  21. func testEvaluateWhenOutsideThreshold() {
  22. let now = Date()
  23. // Build expires in 10 days → outside threshold (7 days)
  24. let expiryDate = Calendar.current.date(byAdding: .day, value: 10, to: now)!
  25. let data = AlarmData(expireDate: expiryDate)
  26. XCTAssertFalse(cond.evaluate(alarm: alarm, data: data))
  27. }
  28. func testEvaluateWhenNoExpireDate() {
  29. let data = AlarmData(expireDate: nil)
  30. XCTAssertFalse(cond.evaluate(alarm: alarm, data: data))
  31. }
  32. func testEvaluateWhenNoThreshold() {
  33. // Clear threshold
  34. alarm.threshold = nil
  35. let now = Date()
  36. let expiryDate = Calendar.current.date(byAdding: .day, value: 5, to: now)!
  37. let data = AlarmData(expireDate: expiryDate)
  38. XCTAssertFalse(cond.evaluate(alarm: alarm, data: data))
  39. }
  40. }