CachedGlucoseObjectTests.swift 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // CachedGlucoseObjectTests.swift
  3. // LoopKitHostedTests
  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 CachedGlucoseObjectOperationsTests: PersistenceControllerTestCase {
  12. func testCreateFromNewGlucoseSample() {
  13. cacheStore.managedObjectContext.performAndWait {
  14. let startDate = dateFormatter.date(from: "2020-01-02T03:04:05Z")!
  15. let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 123.4)
  16. let newGlucoseSample = NewGlucoseSample(date: startDate,
  17. quantity: quantity,
  18. isDisplayOnly: true,
  19. wasUserEntered: false,
  20. syncIdentifier: "F4C094AA-9EBE-4804-8F02-90C7B613BDEC",
  21. syncVersion: 2,
  22. device: nil)
  23. let object = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  24. object.create(from: newGlucoseSample, provenanceIdentifier: "06173C6A-4945-4139-A77D-E3ABC3221EA9")
  25. XCTAssertNil(object.uuid)
  26. XCTAssertEqual(object.provenanceIdentifier, "06173C6A-4945-4139-A77D-E3ABC3221EA9")
  27. XCTAssertEqual(object.syncIdentifier, "F4C094AA-9EBE-4804-8F02-90C7B613BDEC")
  28. XCTAssertEqual(object.primitiveSyncVersion, 2)
  29. XCTAssertEqual(object.value, quantity.doubleValue(for: .milligramsPerDeciliter))
  30. XCTAssertEqual(object.unitString, HKUnit.milligramsPerDeciliter.unitString)
  31. XCTAssertEqual(object.startDate, startDate)
  32. XCTAssertEqual(object.isDisplayOnly, true)
  33. XCTAssertEqual(object.wasUserEntered, false)
  34. XCTAssertEqual(object.modificationCounter, 1)
  35. }
  36. }
  37. func testCreateFromQuantitySample() {
  38. cacheStore.managedObjectContext.performAndWait {
  39. let type = HKQuantityType.quantityType(forIdentifier: .bloodGlucose)!
  40. let startDate = dateFormatter.date(from: "2020-02-03T04:05:06Z")!
  41. let quantity = HKQuantity(unit: .milligramsPerDeciliter, doubleValue: 123.4)
  42. let metadata: [String: Any] = [
  43. HKMetadataKeySyncIdentifier: "0B2353CD-7F98-4297-81E2-8D6FCDD02655",
  44. HKMetadataKeySyncVersion: 2,
  45. MetadataKeyGlucoseIsDisplayOnly: false,
  46. HKMetadataKeyWasUserEntered: true
  47. ]
  48. let quantitySample = HKQuantitySample(type: type, quantity: quantity, start: startDate, end: startDate, metadata: metadata)
  49. let object = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  50. object.create(from: quantitySample)
  51. XCTAssertNotNil(object.uuid)
  52. XCTAssertEqual(object.provenanceIdentifier, "")
  53. XCTAssertEqual(object.syncIdentifier, "0B2353CD-7F98-4297-81E2-8D6FCDD02655")
  54. XCTAssertEqual(object.primitiveSyncVersion, 2)
  55. XCTAssertEqual(object.value, quantity.doubleValue(for: .milligramsPerDeciliter))
  56. XCTAssertEqual(object.unitString, HKUnit.milligramsPerDeciliter.unitString)
  57. XCTAssertEqual(object.startDate, startDate)
  58. XCTAssertEqual(object.isDisplayOnly, false)
  59. XCTAssertEqual(object.wasUserEntered, true)
  60. XCTAssertEqual(object.modificationCounter, 1)
  61. }
  62. }
  63. private let dateFormatter = ISO8601DateFormatter()
  64. }