BuildExpireConditionTests.swift 1.6 KB

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