// // CachedInsulinDeliveryObjectTests.swift // LoopKitTests // // Copyright © 2018 LoopKit Authors. All rights reserved. // import XCTest @testable import LoopKit class CachedInsulinDeliveryObjectTests: PersistenceControllerTestCase { func testUUIDUniqueConstraintPreSave() { cacheStore.managedObjectContext.performAndWait { let uuid = UUID() let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object1.setDefaultValues() object1.uuid = uuid object1.syncIdentifier = "object1" let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object2.setDefaultValues() object2.uuid = uuid object2.syncIdentifier = "object2" try! cacheStore.managedObjectContext.save() let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all() XCTAssertEqual(1, objects.count) } } func testUUIDUniqueConstraintPostSave() { cacheStore.managedObjectContext.performAndWait { let uuid = UUID() let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object1.setDefaultValues() object1.uuid = uuid try! cacheStore.managedObjectContext.save() let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object2.setDefaultValues() object2.uuid = uuid try! cacheStore.managedObjectContext.save() let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all() XCTAssertEqual(1, objects.count) } } func testSyncIdentifierUniqueConstraint() { cacheStore.managedObjectContext.performAndWait { let uuid = UUID() let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object1.setDefaultValues() object1.syncIdentifier = uuid.uuidString try! cacheStore.managedObjectContext.save() let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object2.setDefaultValues() object2.syncIdentifier = uuid.uuidString try! cacheStore.managedObjectContext.save() let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all() XCTAssertEqual(1, objects.count) } } func testSaveWithDefaultValues() { cacheStore.managedObjectContext.performAndWait { let object1 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object1.setDefaultValues() try! cacheStore.managedObjectContext.save() let object2 = CachedInsulinDeliveryObject(context: cacheStore.managedObjectContext) object2.setDefaultValues() try! cacheStore.managedObjectContext.save() let objects: [CachedInsulinDeliveryObject] = cacheStore.managedObjectContext.all() XCTAssertEqual(2, objects.count) } } } extension CachedInsulinDeliveryObject { fileprivate func setDefaultValues() { uuid = UUID() startDate = Date() endDate = Date() reason = .basal hasLoopKitOrigin = true value = 3.5 syncIdentifier = uuid!.uuidString provenanceIdentifier = "CachedInsulinDeliveryObjectTests" } }