PersistenceControllerTests.swift 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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.syncIdentifier = "foo\(value)"
  18. glucose.syncVersion = 1
  19. glucose.value = Double(value)
  20. glucose.unitString = HKUnit.milligramsPerDeciliter.unitString
  21. glucose.startDate = Date()
  22. glucose.provenanceIdentifier = "PersistenceControllerTests"
  23. glucose.isDisplayOnly = false
  24. }
  25. let predicate = NSPredicate(format: "value < %d", 100)
  26. let count = try! cacheStore.managedObjectContext.purgeObjects(of: CachedGlucoseObject.self, matching: predicate)
  27. XCTAssertEqual(0, count)
  28. try! cacheStore.managedObjectContext.save()
  29. let all: [CachedGlucoseObject] = cacheStore.managedObjectContext.all()
  30. XCTAssertEqual(10, all.count)
  31. }
  32. }
  33. func testPurgeObjectsAfterSave() {
  34. cacheStore.managedObjectContext.performAndWait {
  35. for value in stride(from: 95, to: 105, by: 1) {
  36. let glucose = CachedGlucoseObject(context: cacheStore.managedObjectContext)
  37. glucose.uuid = UUID()
  38. glucose.syncIdentifier = "foo\(value)"
  39. glucose.syncVersion = 1
  40. glucose.value = Double(value)
  41. glucose.unitString = HKUnit.milligramsPerDeciliter.unitString
  42. glucose.startDate = Date()
  43. glucose.provenanceIdentifier = "PersistenceControllerTests"
  44. glucose.isDisplayOnly = false
  45. }
  46. try! cacheStore.managedObjectContext.save()
  47. let predicate = NSPredicate(format: "value < %d", 100)
  48. let count = try! cacheStore.managedObjectContext.purgeObjects(of: CachedGlucoseObject.self, matching: predicate)
  49. XCTAssertEqual(5, count)
  50. let all: [CachedGlucoseObject] = cacheStore.managedObjectContext.all()
  51. XCTAssertEqual(5, all.count)
  52. }
  53. }
  54. }