CachedInsulinDeliveryObjectTests.swift 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. //
  2. // CachedInsulinDeliveryObjectTests.swift
  3. // LoopKitTests
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import XCTest
  8. @testable import LoopKit
  9. class CachedInsulinDeliveryObjectTests: PersistenceControllerTestCase {
  10. func testUUIDUniqueConstraintPreSave() {
  11. cacheStore.managedObjectContext.performAndWait {
  12. let uuid = UUID()
  13. let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  14. object1.setDefaultValues()
  15. object1.uuid = uuid
  16. object1.syncIdentifier = "object1"
  17. let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  18. object2.setDefaultValues()
  19. object2.uuid = uuid
  20. object2.syncIdentifier = "object2"
  21. try! cacheStore.managedObjectContext.save()
  22. let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all()
  23. XCTAssertEqual(1, objects.count)
  24. }
  25. }
  26. func testUUIDUniqueConstraintPostSave() {
  27. cacheStore.managedObjectContext.performAndWait {
  28. let uuid = UUID()
  29. let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  30. object1.setDefaultValues()
  31. object1.uuid = uuid
  32. try! cacheStore.managedObjectContext.save()
  33. let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  34. object2.setDefaultValues()
  35. object2.uuid = uuid
  36. try! cacheStore.managedObjectContext.save()
  37. let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all()
  38. XCTAssertEqual(1, objects.count)
  39. }
  40. }
  41. func testSyncIdentifierUniqueConstraint() {
  42. cacheStore.managedObjectContext.performAndWait {
  43. let uuid = UUID()
  44. let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  45. object1.setDefaultValues()
  46. object1.syncIdentifier = uuid.uuidString
  47. try! cacheStore.managedObjectContext.save()
  48. let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  49. object2.setDefaultValues()
  50. object2.syncIdentifier = uuid.uuidString
  51. try! cacheStore.managedObjectContext.save()
  52. let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all()
  53. XCTAssertEqual(1, objects.count)
  54. }
  55. }
  56. func testSaveWithDefaultValues() {
  57. cacheStore.managedObjectContext.performAndWait {
  58. let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  59. object1.setDefaultValues()
  60. try! cacheStore.managedObjectContext.save()
  61. let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext)
  62. object2.setDefaultValues()
  63. try! cacheStore.managedObjectContext.save()
  64. let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all()
  65. XCTAssertEqual(2, objects.count)
  66. }
  67. }
  68. }
  69. extension CachedInsulinDeliveryObject {
  70. fileprivate func setDefaultValues() {
  71. uuid = UUID()
  72. startDate = Date()
  73. endDate = Date()
  74. reason = .basal
  75. hasLoopKitOrigin = true
  76. value = 3.5
  77. syncIdentifier = uuid!.uuidString
  78. provenanceIdentifier = "CachedInsulinDeliveryObjectTests"
  79. }
  80. }