react-native-navigation的迁移库

RNNViewControllerTests.m 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. //
  2. // RNNViewControllerTests.m
  3. // example
  4. //
  5. // Created by Ran Greenberg on 26/12/2016.
  6. // Copyright © 2016 Facebook. All rights reserved.
  7. //
  8. #import <XCTest/XCTest.h>
  9. #import "RCCManager.h"
  10. #import "RNNViewController.h"
  11. #import "MMDrawerController.h"
  12. #define COMMAND_SINGLE_SCREEN_APP @"singleScreenApp"
  13. #define COMMAND_TAB_BASED_APP @"tabBasedApp"
  14. #define COMMAND_SINGLE_WITH_LEFT_SIDE_MENU @"singleWithLeftSideMenu"
  15. #define COMMAND_SINGLE_WITH_RIGHT_SIDE_MENU @"singleWithRightSideMenu"
  16. #define COMMAND_SINGLE_WITH_BOTH_SIDE_MENU @"singleWithBothMenus"
  17. #define COMMAND_TAB_BASED_WITH_SIDE_MENT @"tabBasedWithSideMenu"
  18. @interface RNNViewControllerTests : XCTestCase
  19. @property (nonatomic, strong) RCTBridge *bridge;
  20. @property (nonatomic, strong) NSDictionary *jsonCommands;
  21. @end
  22. @implementation RNNViewControllerTests
  23. - (void)setUp {
  24. [super setUp];
  25. // Put setup code here. This method is called before the invocation of each test method in the class.
  26. self.bridge = [[RCCManager sharedInstance] getBridge];
  27. self.jsonCommands = [self loadCommandsJsonAsDictionary];
  28. }
  29. - (void)tearDown {
  30. // Put teardown code here. This method is called after the invocation of each test method in the class.
  31. self.bridge = nil;
  32. self.jsonCommands = nil;
  33. [super tearDown];
  34. }
  35. -(NSDictionary*)loadCommandsJsonAsDictionary {
  36. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"commands" ofType:@"json"];
  37. NSData *data = [NSData dataWithContentsOfFile:filePath];
  38. NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
  39. return json;
  40. }
  41. - (void)testWrongSyntax {
  42. NSDictionary *layout = @{@"key": @"com.example.FirstTabScreen"};
  43. id vc = [RNNViewController controllerWithLayout:layout bridge:self.bridge];
  44. XCTAssertNil(vc);
  45. }
  46. -(void)testSingleScreenApp {
  47. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_SINGLE_SCREEN_APP] bridge:self.bridge];
  48. XCTAssertTrue([vc isKindOfClass:[UINavigationController class]]);
  49. }
  50. -(void)testTabBasedApp {
  51. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_TAB_BASED_APP] bridge:self.bridge];
  52. XCTAssertTrue([vc isKindOfClass:[UITabBarController class]]);
  53. UITabBarController *tabsController = (UITabBarController*)vc;
  54. for (id tab in tabsController.viewControllers) {
  55. XCTAssertTrue([tab isKindOfClass:[UINavigationController class]]);
  56. }
  57. }
  58. -(void)testSingleWithLeftSideMenu {
  59. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_SINGLE_WITH_LEFT_SIDE_MENU] bridge:self.bridge];
  60. XCTAssertTrue([vc isKindOfClass:[MMDrawerController class]]);
  61. MMDrawerController *sideMenuLeft = (MMDrawerController*)vc;
  62. XCTAssertNotNil(sideMenuLeft.leftDrawerViewController);
  63. XCTAssertNotNil(sideMenuLeft.centerViewController);
  64. XCTAssertNil(sideMenuLeft.rightDrawerViewController);
  65. }
  66. -(void)testSingleWithRightSideMenu {
  67. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_SINGLE_WITH_RIGHT_SIDE_MENU] bridge:self.bridge];
  68. XCTAssertTrue([vc isKindOfClass:[MMDrawerController class]]);
  69. MMDrawerController *sideMenuRight = (MMDrawerController*)vc;
  70. XCTAssertNil(sideMenuRight.leftDrawerViewController);
  71. XCTAssertNotNil(sideMenuRight.centerViewController);
  72. XCTAssertNotNil(sideMenuRight.rightDrawerViewController);
  73. }
  74. -(void)testSingleWithBothSideMenu {
  75. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_SINGLE_WITH_BOTH_SIDE_MENU] bridge:self.bridge];
  76. XCTAssertTrue([vc isKindOfClass:[MMDrawerController class]]);
  77. MMDrawerController *sideMenuBoth = (MMDrawerController*)vc;
  78. XCTAssertNotNil(sideMenuBoth.leftDrawerViewController);
  79. XCTAssertNotNil(sideMenuBoth.centerViewController);
  80. XCTAssertNotNil(sideMenuBoth.rightDrawerViewController);
  81. }
  82. -(void)testTabBasedWithBothSideMenu {
  83. id vc = [RNNViewController controllerWithLayout:self.jsonCommands[COMMAND_TAB_BASED_WITH_SIDE_MENT] bridge:self.bridge];
  84. XCTAssertTrue([vc isKindOfClass:[MMDrawerController class]]);
  85. MMDrawerController *sideMenuBothWithTabs = (MMDrawerController*)vc;
  86. XCTAssertNotNil(sideMenuBothWithTabs.leftDrawerViewController);
  87. XCTAssertNotNil(sideMenuBothWithTabs.centerViewController);
  88. XCTAssertNotNil(sideMenuBothWithTabs.rightDrawerViewController);
  89. XCTAssertTrue([sideMenuBothWithTabs.centerViewController isKindOfClass:[UITabBarController class]]);
  90. }
  91. //- (void)testPerformanceExample {
  92. // // This is an example of a performance test case.
  93. // [self measureBlock:^{
  94. // // Put the code you want to measure the time of here.
  95. // }];
  96. //}
  97. @end