CachedGlucoseObjectTests.swift 3.3 KB

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