PersistenceControllerTests.swift 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // PersistenceControllerTests.swift
  3. // LoopKitTests
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import XCTest
  8. import CoreData
  9. import HealthKit
  10. @testable import LoopKit
  11. class PersistenceControllerTests: PersistenceControllerTestCase {
  12. func testPurgeObjectsBeforeSave() {
  13. cacheStore.managedObjectContext.performAndWait {
  14. for value in stride(from: 95, to: 105, by: 1) {
  15. let glucose = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  16. glucose.uuid = UUID()
  17. glucose.provenanceIdentifier = "PersistenceControllerTests"
  18. glucose.syncIdentifier = "foo\(value)"
  19. glucose.syncVersion = 1
  20. glucose.value = Double(value)
  21. glucose.unitString = HKUnit.milligramsPerDeciliter.unitString
  22. glucose.startDate = Date()
  23. glucose.isDisplayOnly = false
  24. glucose.wasUserEntered = false
  25. }
  26. let predicate = NSPredicate(format: "value < %d", 100)
  27. let count = try! cacheStore.managedObjectContext.purgeObjects(of: CachedGlucoseObject.self, matching: predicate)
  28. XCTAssertEqual(0, count)
  29. try! cacheStore.managedObjectContext.save()
  30. let all: [CachedGlucoseObject] = cacheStore.managedObjectContext.all()
  31. XCTAssertEqual(10, all.count)
  32. }
  33. }
  34. func testPurgeObjectsAfterSave() {
  35. cacheStore.managedObjectContext.performAndWait {
  36. for value in stride(from: 95, to: 105, by: 1) {
  37. let glucose = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  38. glucose.uuid = UUID()
  39. glucose.provenanceIdentifier = "PersistenceControllerTests"
  40. glucose.syncIdentifier = "foo\(value)"
  41. glucose.syncVersion = 1
  42. glucose.value = Double(value)
  43. glucose.unitString = HKUnit.milligramsPerDeciliter.unitString
  44. glucose.startDate = Date()
  45. glucose.isDisplayOnly = false
  46. glucose.wasUserEntered = false
  47. }
  48. try! cacheStore.managedObjectContext.save()
  49. let predicate = NSPredicate(format: "value < %d", 100)
  50. let count = try! cacheStore.managedObjectContext.purgeObjects(of: CachedGlucoseObject.self, matching: predicate)
  51. XCTAssertEqual(5, count)
  52. let all: [CachedGlucoseObject] = cacheStore.managedObjectContext.all()
  53. XCTAssertEqual(5, all.count)
  54. }
  55. }
  56. }