StoredGlucoseSampleTests.swift 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // StoredGlucoseSampleTests.swift
  3. // LoopKitTests
  4. //
  5. // Created by Darin Krauss on 10/12/20.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. import XCTest
  9. import HealthKit
  10. @testable import LoopKit
  11. class StoredGlucoseSampleInitializerTests: XCTestCase {
  12. func testQuantitySampleInitializer() {
  13. let type = HKQuantityType.quantityType(forIdentifier: .bloodGlucose)!
  14. let startDate = dateFormatter.date(from: "2020-01-02T03:04:05Z")!
  15. let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 123.4)
  16. let metadata: [String: Any] = [
  17. HKMetadataKeySyncIdentifier: "3A95BED9-2633-4D6A-9229-70B07521C561",
  18. HKMetadataKeySyncVersion: 2,
  19. MetadataKeyGlucoseIsDisplayOnly: true,
  20. HKMetadataKeyWasUserEntered: true
  21. ]
  22. let quantitySample = HKQuantitySample(type: type, quantity: quantity, start: startDate, end: startDate, metadata: metadata)
  23. let sample = StoredGlucoseSample(sample: quantitySample)
  24. XCTAssertNotNil(sample.uuid)
  25. XCTAssertEqual(sample.provenanceIdentifier, "")
  26. XCTAssertEqual(sample.syncIdentifier, "3A95BED9-2633-4D6A-9229-70B07521C561")
  27. XCTAssertEqual(sample.syncVersion, 2)
  28. XCTAssertEqual(sample.startDate, startDate)
  29. XCTAssertEqual(sample.quantity, quantity)
  30. XCTAssertEqual(sample.isDisplayOnly, true)
  31. XCTAssertEqual(sample.wasUserEntered, true)
  32. }
  33. func testFullInitializer() {
  34. let uuid = UUID()
  35. let startDate = dateFormatter.date(from: "2020-02-03T04:05:06Z")!
  36. let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 134.5)
  37. let sample = StoredGlucoseSample(uuid: uuid,
  38. provenanceIdentifier: "8A1333E7-79CB-413F-AB7A-5413F14D4531",
  39. syncIdentifier: "E7D34EED-CFEE-48FD-810F-5C8C41FACA83",
  40. syncVersion: 3,
  41. startDate: startDate,
  42. quantity: quantity,
  43. isDisplayOnly: true,
  44. wasUserEntered: false)
  45. XCTAssertEqual(sample.uuid, uuid)
  46. XCTAssertEqual(sample.provenanceIdentifier, "8A1333E7-79CB-413F-AB7A-5413F14D4531")
  47. XCTAssertEqual(sample.syncIdentifier, "E7D34EED-CFEE-48FD-810F-5C8C41FACA83")
  48. XCTAssertEqual(sample.syncVersion, 3)
  49. XCTAssertEqual(sample.startDate, startDate)
  50. XCTAssertEqual(sample.quantity, quantity)
  51. XCTAssertEqual(sample.isDisplayOnly, true)
  52. XCTAssertEqual(sample.wasUserEntered, false)
  53. }
  54. func testFullInitializerOptional() {
  55. let startDate = dateFormatter.date(from: "2020-03-04T05:06:07Z")!
  56. let quantity = HKQuantity(unit: .millimolesPerLiter, doubleValue: 6.5)
  57. let sample = StoredGlucoseSample(uuid: nil,
  58. provenanceIdentifier: "95F800A3-A59D-4419-B8F2-611BED0962CF",
  59. syncIdentifier: nil,
  60. syncVersion: nil,
  61. startDate: startDate,
  62. quantity: quantity,
  63. isDisplayOnly: false,
  64. wasUserEntered: true)
  65. XCTAssertNil(sample.uuid)
  66. XCTAssertEqual(sample.provenanceIdentifier, "95F800A3-A59D-4419-B8F2-611BED0962CF")
  67. XCTAssertNil(sample.syncIdentifier)
  68. XCTAssertNil(sample.syncVersion)
  69. XCTAssertEqual(sample.startDate, startDate)
  70. XCTAssertEqual(sample.quantity, quantity)
  71. XCTAssertEqual(sample.isDisplayOnly, false)
  72. XCTAssertEqual(sample.wasUserEntered, true)
  73. }
  74. private let dateFormatter = ISO8601DateFormatter()
  75. }
  76. class StoredGlucoseSampleManagedObjectInitializerTests: PersistenceControllerTestCase {
  77. func testManagedObjectInitializer() {
  78. cacheStore.managedObjectContext.performAndWait {
  79. let uuid = UUID()
  80. let startDate = dateFormatter.date(from: "2020-04-05T06:07:08Z")!
  81. let managedObject = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  82. managedObject.uuid = uuid
  83. managedObject.provenanceIdentifier = "C198186D-F15C-4D0F-B8A1-83B28626DB3A"
  84. managedObject.syncIdentifier = "A313021C-4B11-448A-9266-B01321CA0BCC"
  85. managedObject.syncVersion = 4
  86. managedObject.value = 145.6
  87. managedObject.unitString = "mg/dL"
  88. managedObject.startDate = startDate
  89. managedObject.isDisplayOnly = true
  90. managedObject.wasUserEntered = true
  91. let sample = StoredGlucoseSample(managedObject: managedObject)
  92. XCTAssertEqual(sample.uuid, uuid)
  93. XCTAssertEqual(sample.provenanceIdentifier, "C198186D-F15C-4D0F-B8A1-83B28626DB3A")
  94. XCTAssertEqual(sample.syncIdentifier, "A313021C-4B11-448A-9266-B01321CA0BCC")
  95. XCTAssertEqual(sample.syncVersion, 4)
  96. XCTAssertEqual(sample.startDate, startDate)
  97. XCTAssertEqual(sample.quantity, HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 145.6))
  98. XCTAssertEqual(sample.isDisplayOnly, true)
  99. XCTAssertEqual(sample.wasUserEntered, true)
  100. }
  101. }
  102. func testManagedObjectOptional() {
  103. cacheStore.managedObjectContext.performAndWait {
  104. let quantity = HKQuantity(unit: .millimolesPerLiter, doubleValue: 7.6)
  105. let startDate = dateFormatter.date(from: "2020-05-06T07:08:09Z")!
  106. let managedObject = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  107. managedObject.provenanceIdentifier = "9A6AF580-7584-4FB1-90A2-ACCB96DF1D58"
  108. managedObject.value = quantity.doubleValue(for: .millimolesPerLiter)
  109. managedObject.unitString = HKUnit.millimolesPerLiter.unitString
  110. managedObject.startDate = startDate
  111. managedObject.isDisplayOnly = true
  112. managedObject.wasUserEntered = true
  113. let sample = StoredGlucoseSample(managedObject: managedObject)
  114. XCTAssertNil(sample.uuid)
  115. XCTAssertEqual(sample.provenanceIdentifier, "9A6AF580-7584-4FB1-90A2-ACCB96DF1D58")
  116. XCTAssertNil(sample.syncIdentifier)
  117. XCTAssertNil(sample.syncVersion)
  118. XCTAssertEqual(sample.startDate, startDate)
  119. XCTAssertEqual(sample.quantity, HKQuantity(unit: .millimolesPerLiter, doubleValue: 7.6))
  120. XCTAssertEqual(sample.isDisplayOnly, true)
  121. XCTAssertEqual(sample.wasUserEntered, true)
  122. }
  123. }
  124. private let dateFormatter = ISO8601DateFormatter()
  125. }