querying unit tests

This commit is contained in:
John Rommel Estropia
2016-06-11 22:57:00 +09:00
parent 101ab69861
commit 8e5c7ec9b2
7 changed files with 280 additions and 53 deletions

View File

@@ -71,7 +71,7 @@ class BaseTestCase: XCTestCase {
defer {
self.waitForExpectationsWithTimeout(0, handler: nil)
CoreStore.logger = DefaultLogger()
CoreStore.logger = TestLogger([:])
}
return closure()
}

View File

@@ -144,7 +144,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(object)
let objectID = stack.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
stack.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
do {
@@ -153,10 +156,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("%K < %@", "testNumber", 4),
OrderBy(.Descending("testEntityID"))
]
let object = stack.fetchOne(from, fetchClauses)
let object = self.expectLogger([.LogWarning]) {
stack.fetchOne(from, fetchClauses)
}
XCTAssertNil(object)
let objectID = stack.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
stack.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
}
@@ -318,7 +327,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(object)
let objectID = stack.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
stack.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
do {
@@ -327,10 +339,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("%K < %@", "testNumber", 4),
OrderBy(.Descending("testEntityID"))
]
let object = stack.fetchOne(from, fetchClauses)
let object = self.expectLogger([.LogWarning]) {
stack.fetchOne(from, fetchClauses)
}
XCTAssertNil(object)
let objectID = stack.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
stack.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
}
@@ -643,7 +661,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(objects)
let objectIDs = stack.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
stack.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
do {
@@ -652,10 +673,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
]
let objects = stack.fetchAll(from, fetchClauses)
let objects = self.expectLogger([.LogWarning]) {
stack.fetchAll(from, fetchClauses)
}
XCTAssertNil(objects)
let objectIDs = stack.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
stack.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
}
@@ -884,7 +911,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(objects)
let objectIDs = stack.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
stack.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
do {
@@ -892,10 +922,16 @@ final class FetchTests: BaseTestDataTestCase {
let fetchClauses: [FetchClause] = [
OrderBy(.Descending("testEntityID"))
]
let objects = stack.fetchAll(from, fetchClauses)
let objects = self.expectLogger([.LogWarning]) {
stack.fetchAll(from, fetchClauses)
}
XCTAssertNil(objects)
let objectIDs = stack.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
stack.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
}
@@ -1210,11 +1246,14 @@ final class FetchTests: BaseTestDataTestCase {
}
do {
let count = stack.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
let count = self.expectLogger([.LogWarning]) {
stack.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
}
XCTAssertNil(count)
}
}
@@ -1354,11 +1393,14 @@ final class FetchTests: BaseTestDataTestCase {
}
do {
let count = stack.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
let count = self.expectLogger([.LogWarning]) {
stack.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
}
XCTAssertNil(count)
}
}
@@ -1595,7 +1637,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(object)
let objectID = transaction.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
transaction.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
do {
@@ -1604,10 +1649,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("%K < %@", "testNumber", 4),
OrderBy(.Descending("testEntityID"))
]
let object = transaction.fetchOne(from, fetchClauses)
let object = self.expectLogger([.LogWarning]) {
transaction.fetchOne(from, fetchClauses)
}
XCTAssertNil(object)
let objectID = transaction.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
transaction.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
}
@@ -1769,7 +1820,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(object)
let objectID = transaction.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
transaction.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
do {
@@ -1778,10 +1832,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("%K < %@", "testNumber", 4),
OrderBy(.Descending("testEntityID"))
]
let object = transaction.fetchOne(from, fetchClauses)
let object = self.expectLogger([.LogWarning]) {
transaction.fetchOne(from, fetchClauses)
}
XCTAssertNil(object)
let objectID = transaction.fetchObjectID(from, fetchClauses)
let objectID = self.expectLogger([.LogWarning]) {
transaction.fetchObjectID(from, fetchClauses)
}
XCTAssertNil(objectID)
}
}
@@ -2094,7 +2154,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(objects)
let objectIDs = transaction.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
transaction.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
do {
@@ -2103,10 +2166,16 @@ final class FetchTests: BaseTestDataTestCase {
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
]
let objects = transaction.fetchAll(from, fetchClauses)
let objects = self.expectLogger([.LogWarning]) {
transaction.fetchAll(from, fetchClauses)
}
XCTAssertNil(objects)
let objectIDs = transaction.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
transaction.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
}
@@ -2335,7 +2404,10 @@ final class FetchTests: BaseTestDataTestCase {
}
XCTAssertNil(objects)
let objectIDs = transaction.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
transaction.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
do {
@@ -2343,10 +2415,16 @@ final class FetchTests: BaseTestDataTestCase {
let fetchClauses: [FetchClause] = [
OrderBy(.Descending("testEntityID"))
]
let objects = transaction.fetchAll(from, fetchClauses)
let objects = self.expectLogger([.LogWarning]) {
transaction.fetchAll(from, fetchClauses)
}
XCTAssertNil(objects)
let objectIDs = transaction.fetchObjectIDs(from, fetchClauses)
let objectIDs = self.expectLogger([.LogWarning]) {
transaction.fetchObjectIDs(from, fetchClauses)
}
XCTAssertNil(objectIDs)
}
}
@@ -2661,11 +2739,14 @@ final class FetchTests: BaseTestDataTestCase {
}
do {
let count = transaction.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
let count = self.expectLogger([.LogWarning]) {
transaction.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
}
XCTAssertNil(count)
}
}
@@ -2805,11 +2886,14 @@ final class FetchTests: BaseTestDataTestCase {
}
do {
let count = transaction.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
let count = self.expectLogger([.LogWarning]) {
transaction.fetchCount(
from,
Where("testNumber", isEqualTo: 0),
OrderBy(.Descending("testEntityID"))
)
}
XCTAssertNil(count)
}
}

View File

@@ -174,7 +174,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>()
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)
@@ -189,7 +192,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>("Config1")
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)
@@ -204,7 +210,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>("Config2")
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)
@@ -290,7 +299,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>("Config1")
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)
@@ -305,7 +317,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>("Config2")
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)
@@ -391,7 +406,10 @@ final class FromTests: BaseTestCase {
let from = From<TestEntity2>("Config1")
let request = NSFetchRequest()
let storesFound = from.applyToFetchRequest(request, context: dataStack.mainContext)
let storesFound = self.expectLogger([.LogWarning]) {
from.applyToFetchRequest(request, context: dataStack.mainContext)
}
XCTAssertFalse(storesFound)
XCTAssertNotNil(request.entity)
XCTAssertNotNil(request.affectedStores)

View File

@@ -6,6 +6,7 @@
<attribute name="testDate" optional="YES" attributeType="Date" syncable="YES"/>
<attribute name="testDecimal" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
<attribute name="testEntityID" attributeType="Integer 64" syncable="YES"/>
<attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="testNumber" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
<attribute name="testString" optional="YES" attributeType="String" syncable="YES"/>
</entity>
@@ -15,6 +16,7 @@
<attribute name="testDate" optional="YES" attributeType="Date" syncable="YES"/>
<attribute name="testDecimal" optional="YES" attributeType="Decimal" defaultValueString="0.0" syncable="YES"/>
<attribute name="testEntityID" attributeType="Integer 64" syncable="YES"/>
<attribute name="testNil" optional="YES" attributeType="String" syncable="YES"/>
<attribute name="testNumber" optional="YES" attributeType="Integer 32" defaultValueString="0" syncable="YES"/>
<attribute name="testString" optional="YES" attributeType="String" syncable="YES"/>
</entity>
@@ -25,7 +27,7 @@
<memberEntity name="TestEntity2"/>
</configuration>
<elements>
<element name="TestEntity1AAA" positionX="-63" positionY="-18" width="128" height="150"/>
<element name="TestEntity2" positionX="-63" positionY="9" width="128" height="150"/>
<element name="TestEntity1AAA" positionX="-63" positionY="-18" width="128" height="165"/>
<element name="TestEntity2" positionX="-63" positionY="9" width="128" height="165"/>
</elements>
</model>

View File

@@ -1153,4 +1153,125 @@ class QueryTests: BaseTestDataTestCase {
}
}
}
@objc
dynamic func test_ThatDataStacks_CanQueryAttributes() {
let configurations: [String?] = [nil]
self.prepareStack(configurations: configurations) { (stack) in
self.prepareTestDataForStack(stack, configurations: configurations)
let from = From<TestEntity1>(configurations)
let queryClauses: [QueryClause] = [
Where("%K > %@", "testNumber", 3),
OrderBy(.Ascending("testEntityID"))
]
do {
let values = stack.queryAttributes(
from,
Select(
"testBoolean",
"testNumber",
"testDecimal",
"testString",
"testData",
"testDate",
"testNil"
),
queryClauses
)
XCTAssertNotNil(values)
XCTAssertEqual(
values!,
[
[
"testBoolean": NSNumber(bool: false),
"testNumber": NSNumber(integer: 4),
"testDecimal": NSDecimalNumber(string: "4"),
"testString": "nil:TestEntity1:4",
"testData": ("nil:TestEntity1:4" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!,
"testDate": self.dateFormatter.dateFromString("2000-01-04T00:00:00Z")!
],
[
"testBoolean": NSNumber(bool: true),
"testNumber": NSNumber(integer: 5),
"testDecimal": NSDecimalNumber(string: "5"),
"testString": "nil:TestEntity1:5",
"testData": ("nil:TestEntity1:5" as NSString).dataUsingEncoding(NSUTF8StringEncoding)!,
"testDate": self.dateFormatter.dateFromString("2000-01-05T00:00:00Z")!
]
]
)
}
}
}
@objc
dynamic func test_ThatDataStacks_CanQueryAggregates() {
let configurations: [String?] = [nil]
self.prepareStack(configurations: configurations) { (stack) in
self.prepareTestDataForStack(stack, configurations: configurations)
let from = From<TestEntity1>(configurations)
let queryClauses: [QueryClause] = []
do {
let values = stack.queryAttributes(
from,
Select(
.Sum("testBoolean"),
.Count("testNumber"),
.Maximum("testNumber"),
.Minimum("testNumber"),
.Average("testDecimal")
),
queryClauses
)
XCTAssertNotNil(values)
XCTAssertEqual(
values!,
[
[
"sum(testBoolean)": 3,
"count(testNumber)": 5,
"max(testNumber)": 5,
"min(testNumber)": 1,
"average(testDecimal)": 3,
]
]
)
}
do {
let values = stack.queryAttributes(
from,
Select(
.Sum("testBoolean", As: "testSum"),
.Count("testNumber", As: "testCount"),
.Maximum("testNumber", As: "testMaximum"),
.Minimum("testNumber", As: "testMinimum"),
.Average("testDecimal", As: "testAverage")
),
queryClauses
)
XCTAssertNotNil(values)
XCTAssertEqual(
values!,
[
[
"testSum": 3,
"testCount": 5,
"testMaximum": 5,
"testMinimum": 1,
"testAverage": 3,
]
]
)
}
}
}
}

View File

@@ -35,4 +35,5 @@ class TestEntity1: NSManagedObject {
@NSManaged var testBoolean: NSNumber?
@NSManaged var testDecimal: NSDecimalNumber?
@NSManaged var testData: NSData?
@NSManaged var testNil: String?
}

View File

@@ -35,4 +35,5 @@ class TestEntity2: NSManagedObject {
@NSManaged var testBoolean: NSNumber?
@NSManaged var testDecimal: NSDecimalNumber?
@NSManaged var testData: NSData?
@NSManaged var testNil: String?
}