Skip to content

Commit 5583056

Browse files
committed
Added unit test for moving element to start of FirebaseArray
1 parent 26cfce1 commit 5583056

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

FirebaseDatabaseUITests/FirebaseArrayTest.m

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,4 +378,36 @@ - (void)testFirebaseArrayCanMoveElement {
378378
XCTAssert(expectedParametersWereCorrect, @"unexpected parameter in delegate callback");
379379
}
380380

381+
- (void)testFirebaseArrayCanMoveElementToStart {
382+
[self.observable populateWithCount:10];
383+
self.snap.key = @"8";
384+
385+
// Test delegate
386+
__block BOOL delegateWasCalled = NO;
387+
__block BOOL expectedParametersWereCorrect = NO;
388+
self.arrayDelegate.didMoveObject = ^(FirebaseArray *array, id object, NSUInteger from, NSUInteger to) {
389+
// Xcode complains about retain cycles if an XCTAssert is placed in here.
390+
delegateWasCalled = YES;
391+
expectedParametersWereCorrect = (array == self.firebaseArray &&
392+
object == self.snap &&
393+
from == 8 && to == 0);
394+
};
395+
396+
// Move 8 to the start
397+
[self.observable sendEvent:FIRDataEventTypeChildMoved withObject:self.snap previousKey:@"" error:nil];
398+
399+
// Array expectation
400+
NSArray *items = self.firebaseArray.items;
401+
NSArray *expected = @[@"8", @"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"9"];
402+
NSMutableArray *result = [NSMutableArray array];
403+
for (FUIFakeSnapshot *snapshot in items) {
404+
[result addObject:snapshot.key];
405+
}
406+
XCTAssert([result isEqual:expected], @"expected firebaseArray contents to equal %@, got %@", expected, [result copy]);
407+
408+
// Delegate expectations
409+
XCTAssert(delegateWasCalled, @"expected delegate to receive callback for deletion");
410+
XCTAssert(expectedParametersWereCorrect, @"unexpected parameter in delegate callback");
411+
}
412+
381413
@end

0 commit comments

Comments
 (0)