From 39d41a5b065e68b4ea72f0980f695e85b377d9b9 Mon Sep 17 00:00:00 2001 From: Oleg Gnidets Date: Wed, 22 Dec 2021 22:02:47 +0200 Subject: [PATCH] Minor refactoring Tests refactoring. Add reconnect method. --- OHMySQL/Sources/OHMySQLQueryContext.m | 84 +++++++++++-------- OHMySQL/Sources/OHMySQLStoreCoordinator.h | 5 +- OHMySQL/Sources/OHMySQLStoreCoordinator.m | 12 ++- .../OHMySQL.xcodeproj/project.pbxproj | 2 - .../xcschemes/OHMySQLTests.xcscheme | 3 +- .../Helpers/XCTestCase+Database_Basic.m | 11 ++- SampleProject/OHMySQLTests/OHMySQLTests.m | 47 ++++++----- SampleProject/OHMySQLTests/OHNullTests.m | 20 ++--- SampleProject/OHMySQLTests/OHObjectTests.m | 34 ++++---- SampleProject/OHMySQLTests/OHSelectTests.m | 33 +++----- SampleProject/OHMySQLTests/OHThreadingTests.m | 18 ++-- 11 files changed, 137 insertions(+), 132 deletions(-) diff --git a/OHMySQL/Sources/OHMySQLQueryContext.m b/OHMySQL/Sources/OHMySQLQueryContext.m index d271fec..91fb5d6 100644 --- a/OHMySQL/Sources/OHMySQLQueryContext.m +++ b/OHMySQL/Sources/OHMySQLQueryContext.m @@ -72,45 +72,50 @@ - (instancetype)initWithParentQueryContext:(OHMySQLQueryContext *)parentQueryCon #pragma mark - Execute - (BOOL)executeQueryRequest:(OHMySQLQueryRequest *)query error:(NSError *__autoreleasing *)error { - NSParameterAssert(query.queryString); - MYSQL *_mysql = self.mysql; - if (!self.storeCoordinator.isConnected || !_mysql) { - __unused NSString *errorString = [NSString stringWithUTF8String:mysql_error(_mysql)]; - OHLogError(@"The connection is broken: %@", errorString); - OHLogError(@"Cannot connect to DB. Check your configuration properties."); - - - if (error) { - *error = contextError(@"Cannot connect to DB. Check your configuration properties."); - } + @synchronized(self) { + NSParameterAssert(query.queryString); - return NO; - } - - CFAbsoluteTime queryStartTime = CFAbsoluteTimeGetCurrent(); - mysql_set_server_option(_mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); - - // To get proper length of string in different languages. - NSInteger queryStringLength = strlen(query.queryString.UTF8String); - NSInteger errorCode = mysql_real_query(_mysql, query.queryString.UTF8String, queryStringLength); - - query.timeline.queryDuration = CFAbsoluteTimeGetCurrent() - queryStartTime; - if (errorCode) { - NSString *mysqlError = [NSString stringWithUTF8String:mysql_error(_mysql)]; - OHLogError(@"Cannot execute query: %@", mysqlError); - if (error) { - *error = contextError(mysqlError); + if ((!self.storeCoordinator.isConnected || !self.mysql) && ![self.storeCoordinator reconnect]) { + __unused NSString *errorString = [NSString stringWithUTF8String:mysql_error(self.mysql)]; + OHLogError(@"The connection is broken: %@", errorString); + OHLogError(@"Cannot connect to DB. Check your configuration properties."); + + if (error) { + *error = contextError(@"Cannot connect to DB. Check your configuration properties."); + } + return NO; } + + CFAbsoluteTime queryStartTime = CFAbsoluteTimeGetCurrent(); + mysql_set_server_option(self.mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); + + // To get proper length of string in different languages. + NSInteger queryStringLength = strlen(query.queryString.UTF8String); + NSInteger errorCode = mysql_real_query(self.mysql, query.queryString.UTF8String, queryStringLength); + + query.timeline.queryDuration = CFAbsoluteTimeGetCurrent() - queryStartTime; + if (errorCode) { + [self.storeCoordinator reconnect]; + + NSString *mysqlError = [NSString stringWithUTF8String:mysql_error(self.mysql)]; + OHLogError(@"Cannot execute query: %@", mysqlError); + + if (error) { + *error = contextError(mysqlError); + return NO; + } + } + + return YES; } - - return YES; } - (NSArray *> *)executeQueryRequestAndFetchResult:(OHMySQLQueryRequest *)query error:(NSError *__autoreleasing *)error { // http://dev.mysql.com/doc/refman/5.7/en/c-api-threaded-clients.html @synchronized (self) { [self executeQueryRequest:query error:error]; + if (error && *error) { OHLogError(@"Cannot get results: %@", *error); return nil; @@ -264,10 +269,21 @@ - (BOOL)deleteObject:(NSObject *)object error:(NSError **)err - (NSArray *> *)fetchResult { MYSQL *mysql = self.mysql; - if (!mysql) { return nil; } - MYSQL_RES *result = mysql_store_result(mysql); - if (!result) { return nil; } + if (!mysql) { + return nil; + } + + MYSQL_RES *result = mysql_use_result(mysql); + if (!result) { + if (mysql_field_count(mysql) == 0) { + OHLog(@"%@ rows affected\n", self.affectedRows); + } else { + OHLogWarn(@"Could not retrieve result set\n"); + } + + return nil; + } MYSQL_FIELD *fields = mysql_fetch_fields(result); @@ -280,8 +296,8 @@ - (BOOL)deleteObject:(NSObject *)object error:(NSError **)err for (CFIndex i=0; i + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> diff --git a/SampleProject/OHMySQLTests/Helpers/XCTestCase+Database_Basic.m b/SampleProject/OHMySQLTests/Helpers/XCTestCase+Database_Basic.m index 9818950..7e06e64 100644 --- a/SampleProject/OHMySQLTests/Helpers/XCTestCase+Database_Basic.m +++ b/SampleProject/OHMySQLTests/Helpers/XCTestCase+Database_Basic.m @@ -6,11 +6,11 @@ NSString *const kDatabaseName = @"mysql"; NSString *const kTableName = @"TestTable"; -NSString *const kDropTableString = @"DROP TABLE `TestTable`;"; +NSString *const kDropTableString = @"DROP TABLE `TestTable`"; NSString * const kCreateTestTableQuery = @"CREATE TABLE `TestTable` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) default NULL, `surname` varchar(255) default NULL, `age` mediumint default NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=1; INSERT INTO `TestTable` (`name`,`surname`,`age`) VALUES ('Bradley','Oneill',90),('Levi','Moses',25),('Orlando','Cummings',9),('Hasad','Maldonado',5),('Carlos','Lowery',57),('Axel','Doyle',74),('Hasad','Booth',60),('Hall','Walters',84),('Dustin','Velazquez',84),('Randall','Riggs',91); INSERT INTO `TestTable` (`name`,`surname`,`age`) VALUES ('Harper','Knowles',67),('Jasper','Massey',95),('Hop','Casey',2),('Timon','Bright',25),('Lionel','Mcintyre',74),('Denton','Kennedy',35),('Ethan','Jarvis',43),('Hasad','Stevens',56),('Benedict','Dudley',29),('Shad','Pace',94); INSERT INTO `TestTable` (`name`,`surname`,`age`) VALUES ('Asher','Williamson',70),('Sylvester','Baldwin',37),('Lucas','Bush',62),('Nissim','Harvey',43),('Anthony','Adkins',4),('Norman','Snow',26),('Coby','Oneill',82);"; -static NSString *const kEmptyTableString = @"CREATE TABLE `TestTable` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) default NULL, `surname` varchar(255) default NULL, `age` mediumint default NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=1; INSERT INTO `TestTable` (`name`,`surname`,`age`);"; +static NSString *const kEmptyTableString = @"CREATE TABLE `TestTable` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `name` varchar(255) default NULL, `surname` varchar(255) default NULL, `age` mediumint default NULL, PRIMARY KEY (`id`) ) AUTO_INCREMENT=1; INSERT INTO `TestTable` (`name`,`surname`,`age`)"; @implementation XCTestCase (Database_Basic) @@ -61,6 +61,7 @@ - (void)createTableWithQuery:(NSString *)query { // when OHMySQLQueryRequest *queryRequest = [[OHMySQLQueryRequest alloc] initWithQueryString:query]; NSError *error; + BOOL success = [self.mainQueryContext executeQueryRequest:queryRequest error:&error]; // then @@ -68,9 +69,11 @@ - (void)createTableWithQuery:(NSString *)query { } - (void)dropTableNamed:(NSString *)tableName { - NSString *dropQueryString = [NSString stringWithFormat:@"DROP TABLE %@;", tableName]; + NSString *dropQueryString = [NSString stringWithFormat:@"DROP TABLE %@", tableName]; OHMySQLQueryRequest *dropQueryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:dropQueryString]; - [self.mainQueryContext executeQueryRequest:dropQueryRequest error:nil]; + + NSError *error; + [self.mainQueryContext executeQueryRequest:dropQueryRequest error:&error]; } - (void)createEmptyTable { diff --git a/SampleProject/OHMySQLTests/OHMySQLTests.m b/SampleProject/OHMySQLTests/OHMySQLTests.m index 7a36016..0612d24 100644 --- a/SampleProject/OHMySQLTests/OHMySQLTests.m +++ b/SampleProject/OHMySQLTests/OHMySQLTests.m @@ -24,16 +24,19 @@ @implementation OHMySQLTests - (void)setUp { [super setUp]; [OHMySQLTests configureDatabase]; + + [self createTable]; } - (void)tearDown { - [super tearDown]; } #pragma mark - Testing -- (void)test00SelectDatabase { +- (void)testSelectDatabase { + [self dropTableNamed:kTableName]; + // when OHResultErrorType result = [self.storeCoordinator selectDataBase:kDatabaseName]; @@ -41,11 +44,7 @@ - (void)test00SelectDatabase { XCTAssert(result == OHResultErrorTypeNone); } -- (void)test01CreateTable { - [self createTable]; -} - -- (void)test10InsertNewRow { +- (void)testInsertNewRow { // given NSDictionary *insertSet = @{ @"name" : @"Oleg", @"surname" : @"Hnidets", @"age" : @"21" }; OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory INSERT:kTableName @@ -63,7 +62,7 @@ - (void)test10InsertNewRow { XCTAssert(lastInsertedID > 0); } -- (void)test11UpdateAll { +- (void)testUpdateAll { // given NSDictionary *updateSet = @{ @"name" : @"Oleg", @"surname" : @"Hnidets", @"age" : @"21" }; OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory UPDATE:kTableName @@ -78,21 +77,22 @@ - (void)test11UpdateAll { AssertIfError(); } -- (void)test12AffectedRows { +- (void)testAffectedRows { // when NSInteger numberOfRows = [self.mainQueryContext affectedRows].integerValue; XCTAssert(numberOfRows != -1); } -- (void)test13CountRecords { +- (void)testCountRecords { // when NSNumber *countOfObjects = [self countOfObjects]; // then XCTAssertNotEqualObjects(countOfObjects, @0); } -- (void)test14UpdateAllWithCondition { +- (void)testUpdateAllWithCondition { // given + [self testInsertNewRow]; OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory UPDATE:kTableName set:@{ @"age" : @"25" } condition:@"name='Oleg'"]; // when @@ -103,8 +103,9 @@ - (void)test14UpdateAllWithCondition { AssertIfError(); } -- (void)test15DeleAllWithCondition { +- (void)testDeleAllWithCondition { // given + [self testInsertNewRow]; OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory DELETE:kTableName condition:@"name='Oleg'"]; // when @@ -116,15 +117,17 @@ - (void)test15DeleAllWithCondition { AssertIfError(); } -- (void)test16Refresh { +- (void)testRefresh { // when + [self testInsertNewRow]; OHResultErrorType result = [self.storeCoordinator refresh:OHRefreshOptionTables]; // then XCTAssert(result == OHResultErrorTypeNone); } -- (void)test17DeleteAllRecords { +- (void)testDeleteAllRecords { // given + [self testInsertNewRow]; OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory DELETE:kTableName condition:nil]; // when @@ -135,7 +138,7 @@ - (void)test17DeleteAllRecords { AssertIfError(); } -- (void)test18DropTable { +- (void)testDropTable { // given OHMySQLQueryRequest *queryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:kDropTableString]; @@ -152,7 +155,7 @@ - (void)test18DropTable { XCTAssert(totalTime > 0); } -- (void)test19IncorrectPlainQuery { +- (void)testIncorrectPlainQuery { // given NSString *incorrectQueryString = [kDropTableString stringByReplacingOccurrencesOfString:@"TABLE" withString:@"TABL"]; OHMySQLQueryRequest *queryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:incorrectQueryString]; @@ -165,7 +168,7 @@ - (void)test19IncorrectPlainQuery { AssertIfNoError(); } -- (void)test20IncorrectSelectQuery { +- (void)testIncorrectSelectQuery { // given NSString *incorrectQueryString = @"SELECT qwe FROM 'something'"; OHMySQLQueryRequest *queryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:incorrectQueryString]; @@ -178,14 +181,14 @@ - (void)test20IncorrectSelectQuery { AssertIfNoError(); } -- (void)test21StoreInformation { +- (void)testStoreInformation { // given OHMySQLStore *store = self.storeCoordinator.store; // then XCTAssert(store.serverInfo && store.hostInfo && store.protocolInfo && store.serverVersion && store.status); } -- (void)test22NotConnected { +- (void)testNotConnected { // given [self.storeCoordinator disconnect]; OHMySQLQueryRequest *queryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:kDropTableString]; @@ -194,11 +197,11 @@ - (void)test22NotConnected { NSError *error; BOOL success = [self.mainQueryContext executeQueryRequest:queryRequest error:&error]; // then - AssertIfNoError(); - XCTAssert(success == NO); + AssertIfError(); + XCTAssert(success == YES); } -- (void)test23CheckConnection { +- (void)testCheckConnection { // given [self.storeCoordinator disconnect]; diff --git a/SampleProject/OHMySQLTests/OHNullTests.m b/SampleProject/OHMySQLTests/OHNullTests.m index 72f80e0..325add5 100644 --- a/SampleProject/OHMySQLTests/OHNullTests.m +++ b/SampleProject/OHMySQLTests/OHNullTests.m @@ -27,7 +27,7 @@ - (void)tearDown { [super tearDown]; } -- (void)test01CreateNullRecord { +- (void)testCreateNullRecord { // given OHTestPerson *response = [self createPersonWithSet:@{ } in:kTestNullTable]; @@ -42,7 +42,7 @@ - (void)test01CreateNullRecord { XCTAssert(response.age == [NSNull null]); } -- (void)test02CreateWithNullAndNotNullRecord { +- (void)testCreateWithNullAndNotNullRecord { // given NSDictionary *insertSet = @{ @"name": [NSNull null], @"age": @22 }; OHTestPerson *response = [self createPersonWithSet:insertSet in:kTestNullTable]; @@ -57,7 +57,7 @@ - (void)test02CreateWithNullAndNotNullRecord { XCTAssert([response.age isEqualToNumber:insertSet[@"age"]]); } -- (void)test03CreateRecord { +- (void)testCreateRecord { // given NSDictionary *insertSet = @{ @"name": @"Oleg", @"age": @22 }; OHTestPerson *response = [self createPersonWithSet:insertSet in:kTestNullTable]; @@ -72,20 +72,14 @@ - (void)test03CreateRecord { XCTAssert([response.age isEqualToNumber:insertSet[@"age"]]); } -- (void)test04CreateIncorrectRecord { +- (void)testCreateIncorrectRecord { // given NSDictionary *insertSet = @{ @"name": @22, @"age": @"Oleg" }; OHTestPerson *response = [self createPersonWithSet:insertSet in:kTestNullTable]; // then - XCTAssert(response.ID != nil); - XCTAssert([response.ID isKindOfClass:[NSNumber class]]); - - XCTAssert(response.name != nil); - XCTAssert([response.name isKindOfClass:[NSString class]]); - XCTAssert([response.name isEqualToString:[insertSet[@"name"] stringValue]]); - - XCTAssert(response.age != nil); - XCTAssert([response.age isKindOfClass:[NSNumber class]]); + XCTAssert(response.ID == nil); + XCTAssert(response.name == nil); + XCTAssert(response.age == nil); } @end diff --git a/SampleProject/OHMySQLTests/OHObjectTests.m b/SampleProject/OHMySQLTests/OHObjectTests.m index 825b3dc..b08fe0a 100644 --- a/SampleProject/OHMySQLTests/OHObjectTests.m +++ b/SampleProject/OHMySQLTests/OHObjectTests.m @@ -15,6 +15,8 @@ @implementation OHObjectTests - (void)setUp { [super setUp]; [OHObjectTests configureDatabase]; + + [self createEmptyTable]; } - (void)tearDown { @@ -24,11 +26,7 @@ - (void)tearDown { #pragma mark - Testing -- (void)test01CreateTable { - [self createEmptyTable]; -} - -- (void)test02InsertObject { +- (void)testInsertObject { // given OHTestPerson *person = [OHTestPerson mockObject]; [self.mainQueryContext insertObject:person]; @@ -39,17 +37,19 @@ - (void)test02InsertObject { // then XCTAssert(insertError == nil && person.ID); -} - -- (void)test03CountObjects { + // when NSNumber *countOfObjects = [self countOfObjects]; + OHTestPerson *firstPerson = [self firstPerson]; // then XCTAssertEqualObjects(countOfObjects, @1); + XCTAssert(firstPerson && firstPerson.ID && firstPerson.name && firstPerson.surname && firstPerson.age); } -- (void)test04UpdateObject { +- (void)testUpdateObject { + [self testInsertObject]; + // given OHTestPerson *person = [OHTestPerson mockObject]; person.ID = [self.mainQueryContext lastInsertID]; @@ -64,15 +64,9 @@ - (void)test04UpdateObject { XCTAssert(error == nil && person.ID); } -- (void)test05GetObject { - // when - OHTestPerson *person = [self firstPerson]; +- (void)testDeleteObject { + [self testInsertObject]; - // then - XCTAssert(person && person.ID && person.name && person.surname && person.age); -} - -- (void)test06DeleteObject { // given OHTestPerson *person = [self firstPerson]; @@ -95,7 +89,7 @@ - (void)test06DeleteObject { XCTAssert(!searchedPersons.count); } -- (void)test07DeleteUndefinedObject { +- (void)testDeleteUndefinedObject { // given OHTestPerson *person = [OHTestPerson mockObject]; person.ID = @1234567890; @@ -109,7 +103,7 @@ - (void)test07DeleteUndefinedObject { AssertIfError(); } -- (void)test08AffectedProperties { +- (void)testAffectedProperties { // when NSNumber *affectedRowsBefore = self.mainQueryContext.affectedRows; @@ -117,7 +111,7 @@ - (void)test08AffectedProperties { XCTAssertEqualObjects(affectedRowsBefore, @0); // given - [self test02InsertObject]; + [self testInsertObject]; BOOL result; OHTestPerson *person = [self firstPerson]; diff --git a/SampleProject/OHMySQLTests/OHSelectTests.m b/SampleProject/OHMySQLTests/OHSelectTests.m index 8dcf609..13dcb7b 100644 --- a/SampleProject/OHMySQLTests/OHSelectTests.m +++ b/SampleProject/OHMySQLTests/OHSelectTests.m @@ -11,20 +11,11 @@ @interface OHSelectTests : XCTestCase @implementation OHSelectTests -+ (void)tearDown { - - [OHSelectTests configureDatabase]; - - NSString *dropQueryString = [NSString stringWithFormat:@"DROP TABLE %@;", kTableName]; - OHMySQLQueryRequest *dropQueryRequest =[[OHMySQLQueryRequest alloc] initWithQueryString:dropQueryString]; - [OHMySQLContainer.sharedContainer.mainQueryContext executeQueryRequest:dropQueryRequest error:nil]; - - [super tearDown]; -} - - (void)setUp { [super setUp]; [OHSelectTests configureDatabase]; + + [self createTable]; } - (void)tearDown { @@ -34,11 +25,7 @@ - (void)tearDown { #pragma mark - Testing -- (void)test00ACreateTable { - [self createTable]; -} - -- (void)test01SelectAll { +- (void)testSelectAll { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECT:kTableName condition:nil]; @@ -54,7 +41,7 @@ - (void)test01SelectAll { AssertIfNotDictionary(firstResponseObject); } -- (void)test02SelectAllWithCondition { +- (void)testSelectAllWithCondition { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECT:kTableName condition:@"name='Dustin'"]; @@ -70,7 +57,7 @@ - (void)test02SelectAllWithCondition { AssertIfNotDictionary(firstResponseObject); } -- (void)test03SelectAllWithOrderAsc { +- (void)testSelectAllWithOrderAsc { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECT:kTableName condition:nil @@ -91,7 +78,7 @@ - (void)test03SelectAllWithOrderAsc { XCTAssertEqualObjects(secondObjectID, @2); } -- (void)test04SelectAllWithConditionAndOrderDesc { +- (void)testSelectAllWithConditionAndOrderDesc { // given NSNumber *firstObjectIDLimit = @3; NSNumber *lastObjectIDLimit = @20; @@ -116,7 +103,7 @@ - (void)test04SelectAllWithConditionAndOrderDesc { XCTAssertEqualObjects(lastObjectID, firstObjectIDLimit); } -- (void)test05SelectFirst { +- (void)testSelectFirst { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECTFirst:kTableName condition:nil]; @@ -132,7 +119,7 @@ - (void)test05SelectFirst { XCTAssertEqualObjects(firstObjectID, @1); } -- (void)test07SelectFirstWithCondition { +- (void)testSelectFirstWithCondition { // given NSNumber *conditionID = @5; NSString *condition = [NSString stringWithFormat:@"id>%@", conditionID.stringValue]; @@ -151,7 +138,7 @@ - (void)test07SelectFirstWithCondition { } // TODO: improve -- (void)test08SelectFirstWithConditionOrderedAsc { +- (void)testSelectFirstWithConditionOrderedAsc { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECTFirst:kTableName condition:@"id>1" @@ -169,7 +156,7 @@ - (void)test08SelectFirstWithConditionOrderedAsc { } // TODO: improve -- (void)test09SelectFirstWithConditionOrderedDesc { +- (void)testSelectFirstWithConditionOrderedDesc { // given OHMySQLQueryRequest *queryRequest = [OHMySQLQueryRequestFactory SELECTFirst:kTableName condition:@"id>1" diff --git a/SampleProject/OHMySQLTests/OHThreadingTests.m b/SampleProject/OHMySQLTests/OHThreadingTests.m index 7523f2b..cc63c17 100644 --- a/SampleProject/OHMySQLTests/OHThreadingTests.m +++ b/SampleProject/OHMySQLTests/OHThreadingTests.m @@ -24,6 +24,8 @@ @implementation OHThreadingTests - (void)setUp { [super setUp]; [OHThreadingTests configureDatabase]; + + [self createEmptyTable]; } - (void)tearDown { @@ -33,11 +35,7 @@ - (void)tearDown { #pragma mark - Testing -- (void)test01CreateTable { - [self createEmptyTable]; -} - -- (void)test02InsertObject { +- (void)testInsertObject { // given OHTestPerson *person = [OHTestPerson mockObject]; @@ -55,7 +53,9 @@ - (void)test02InsertObject { waitExpectactions(); } -- (void)test03UpdateObject { +- (void)testUpdateObject { + [self testInsertObject]; + // given OHTestPerson *person = [OHTestPerson mockObject]; person.ID = self.mainQueryContext.lastInsertID; @@ -74,9 +74,7 @@ - (void)test03UpdateObject { }]; waitExpectactions(); -} - -- (void)test04CountAfterUpdate { + // when NSNumber *countOfObjects = [self countOfObjects]; // then @@ -106,7 +104,7 @@ - (void)DISABLED_test06CountAfterDelete { XCTAssertEqualObjects(countOfObjects, @0); } -- (void)test07InsertionOfManyObjects { +- (void)testInsertionOfManyObjects { { // given createExpectation();