12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #import <XCTest/XCTest.h>
- #import "RNNStore.h"
- #import "RNNNavigationStackManager.h"
-
-
- @interface RNNNavigationStackManagerTest : XCTestCase
-
- @property (nonatomic, strong) RNNStore *store;
- @property (nonatomic, strong) UINavigationController *nvc;
- @property (nonatomic, strong) UIViewController *vc1;
- @property (nonatomic, strong) UIViewController *vc2;
- @property (nonatomic, strong) UIViewController *vc3;
- @property (nonatomic, strong) RNNNavigationStackManager *stackManager;
-
- @end
-
- @implementation RNNNavigationStackManagerTest
-
- - (void)setUp {
- [super setUp];
- self.store = [RNNStore new];
-
- self.nvc = [[UINavigationController alloc] init];
- self.vc1 = [RNNRootViewController new];
- self.vc2 = [RNNRootViewController new];
- self.vc3 = [RNNRootViewController new];
- self.stackManager = [RNNNavigationStackManager new];
-
- NSArray *vcArray = @[self.vc1, self.vc2, self.vc3];
- [self.nvc setViewControllers:vcArray];
- }
-
-
- - (void)testPop_removeTopVCFromStack {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method"];
- XCTAssertTrue([self.nvc.topViewController isEqual:self.vc3]);
- [_stackManager popTo:self.vc2 animated:YES completion:^(NSArray *poppedViewControllers) {
- XCTAssertTrue([self.nvc.topViewController isEqual:self.vc2]);
- [expectation fulfill];
- } rejection:nil];
-
- [self waitForExpectationsWithTimeout:1 handler:nil];
- }
-
- - (void)testPopToSpecificVC_removeAllPopedVCFromStack {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method"];
- XCTAssertFalse([self.nvc.topViewController isEqual:self.vc1]);
- [_stackManager popTo:self.vc1 animated:NO completion:^(NSArray *poppedViewControllers) {
- XCTAssertTrue([self.nvc.topViewController isEqual:self.vc1]);
- [expectation fulfill];
- } rejection:nil];
-
- [self waitForExpectationsWithTimeout:1 handler:nil];
- }
-
- - (void)testPopToRoot_removeAllTopVCsFromStack {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method"];
- [_stackManager popToRoot:self.vc3 animated:NO completion:^(NSArray *poppedViewControllers) {
- XCTAssertTrue(self.nvc.childViewControllers.count == 1);
- XCTAssertTrue([self.nvc.topViewController isEqual:self.vc1]);
- [expectation fulfill];
- } rejection:nil];
-
- [self waitForExpectationsWithTimeout:1 handler:nil];
- }
-
- - (void)testStackRoot_shouldUpdateNavigationControllerChildrenViewControllers {
- XCTestExpectation *expectation = [self expectationWithDescription:@"Testing Async Method"];
- [_stackManager setStackRoot:self.vc2 fromViewController:self.vc1 animated:NO completion:^{
- XCTAssertTrue(self.nvc.childViewControllers.count == 1);
- XCTAssertTrue([self.nvc.topViewController isEqual:self.vc2]);
- [expectation fulfill];
- } rejection:nil];
-
- [self waitForExpectationsWithTimeout:1 handler:nil];
- }
-
- @end
|