unit test for scalar IDs for ImportableUniqueObject

This commit is contained in:
John Rommel Estropia
2017-02-13 22:17:03 +09:00
parent 03973790a8
commit 7baaee493d
3 changed files with 13 additions and 30 deletions

View File

@@ -1083,42 +1083,25 @@ extension TestEntity1: ImportableUniqueObject {
// MARK: ImportableUniqueObject // MARK: ImportableUniqueObject
typealias UniqueIDType = NSNumber typealias UniqueIDType = Int64
static var uniqueIDKeyPath: String { static var uniqueIDKeyPath: String {
return #keyPath(TestEntity1.testEntityID) return #keyPath(TestEntity1.testEntityID)
} }
var uniqueIDValue: NSNumber {
get {
guard let ID = self.testEntityID else {
XCTFail()
return 0
}
return ID
}
set {
self.testEntityID = newValue
}
}
static func shouldUpdate(from source: ImportSource, in transaction: BaseDataTransaction) -> Bool { static func shouldUpdate(from source: ImportSource, in transaction: BaseDataTransaction) -> Bool {
return source["skip_update"] == nil return source["skip_update"] == nil
} }
static func uniqueID(from source: ImportSource, in transaction: BaseDataTransaction) throws -> NSNumber? { static func uniqueID(from source: ImportSource, in transaction: BaseDataTransaction) throws -> Int64? {
if let _ = source["throw_on_id"] { if let _ = source["throw_on_id"] {
throw TestIDError() throw TestIDError()
} }
return source[(#keyPath(TestEntity1.testEntityID))] as? NSNumber return source[(#keyPath(TestEntity1.testEntityID))] as? Int64
} }
func update(from source: ImportSource, in transaction: BaseDataTransaction) throws { func update(from source: ImportSource, in transaction: BaseDataTransaction) throws {

View File

@@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model userDefinedModelVersionIdentifier="" type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="10174" systemVersion="15F34" minimumToolsVersion="Xcode 4.3"> <model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="11759" systemVersion="16C67" minimumToolsVersion="Xcode 4.3" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="">
<entity name="TestEntity1AAA" representedClassName="CoreStoreTests.TestEntity1" syncable="YES"> <entity name="TestEntity1AAA" representedClassName="CoreStoreTests.TestEntity1" syncable="YES">
<attribute name="testBoolean" optional="YES" attributeType="Boolean" syncable="YES"/> <attribute name="testBoolean" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testData" optional="YES" attributeType="Binary" syncable="YES"/> <attribute name="testData" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="testDate" optional="YES" attributeType="Date" syncable="YES"/> <attribute name="testDate" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testDecimal" optional="YES" attributeType="Decimal" syncable="YES"/> <attribute name="testDecimal" optional="YES" attributeType="Decimal" syncable="YES"/>
<attribute name="testEntityID" optional="YES" attributeType="Integer 64" syncable="YES"/> <attribute name="testEntityID" optional="YES" attributeType="Integer 64" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/> <attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="testNumber" optional="YES" attributeType="Integer 32" syncable="YES"/> <attribute name="testNumber" optional="YES" attributeType="Integer 32" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testString" optional="YES" attributeType="String" syncable="YES"/> <attribute name="testString" optional="YES" attributeType="String" syncable="YES"/>
</entity> </entity>
<entity name="TestEntity2" representedClassName="CoreStoreTests.TestEntity2" syncable="YES"> <entity name="TestEntity2" representedClassName="CoreStoreTests.TestEntity2" syncable="YES">
<attribute name="testBoolean" optional="YES" attributeType="Boolean" syncable="YES"/> <attribute name="testBoolean" optional="YES" attributeType="Boolean" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testData" optional="YES" attributeType="Binary" syncable="YES"/> <attribute name="testData" optional="YES" attributeType="Binary" syncable="YES"/>
<attribute name="testDate" optional="YES" attributeType="Date" syncable="YES"/> <attribute name="testDate" optional="YES" attributeType="Date" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testDecimal" optional="YES" attributeType="Decimal" syncable="YES"/> <attribute name="testDecimal" optional="YES" attributeType="Decimal" syncable="YES"/>
<attribute name="testEntityID" optional="YES" attributeType="Integer 64" syncable="YES"/> <attribute name="testEntityID" optional="YES" attributeType="Integer 64" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/> <attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="testNumber" optional="YES" attributeType="Integer 32" syncable="YES"/> <attribute name="testNumber" optional="YES" attributeType="Integer 32" usesScalarValueType="NO" syncable="YES"/>
<attribute name="testString" optional="YES" attributeType="String" syncable="YES"/> <attribute name="testString" optional="YES" attributeType="String" syncable="YES"/>
</entity> </entity>
<configuration name="Config1"> <configuration name="Config1">

View File

@@ -519,7 +519,7 @@ are created from `beginSynchronous(...)`. While the syntax is similar to its asy
```swift ```swift
CoreStore.beginSynchronous { (transaction) -> Void in CoreStore.beginSynchronous { (transaction) -> Void in
// make changes // make changes
transaction.commit() _ = transaction.commit()
} }
``` ```
`transaction` above is a `SynchronousDataTransaction` instance. `transaction` above is a `SynchronousDataTransaction` instance.