소스 검색

Add SideMenu tests related to open gesture

On Android options were not updated when SideMenu was opened or closed
via swipe gesture. This caused bugs when trying to interact with the drawer again via gestures since
the drawer would immediately close or open according to the visibility in options.
Guy Carmeli 6 년 전
부모
커밋
f5ada51620
1개의 변경된 파일27개의 추가작업 그리고 3개의 파일을 삭제
  1. 27
    3
      lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java

+ 27
- 3
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java 파일 보기

8
 
8
 
9
 import com.reactnativenavigation.BaseTest;
9
 import com.reactnativenavigation.BaseTest;
10
 import com.reactnativenavigation.mocks.SimpleComponentViewController;
10
 import com.reactnativenavigation.mocks.SimpleComponentViewController;
11
-import com.reactnativenavigation.parse.Options;
12
-import com.reactnativenavigation.parse.SideMenuOptions;
11
+import com.reactnativenavigation.parse.*;
13
 import com.reactnativenavigation.parse.params.Bool;
12
 import com.reactnativenavigation.parse.params.Bool;
14
 import com.reactnativenavigation.parse.params.Number;
13
 import com.reactnativenavigation.parse.params.Number;
15
 import com.reactnativenavigation.parse.params.Text;
14
 import com.reactnativenavigation.parse.params.Text;
16
 import com.reactnativenavigation.presentation.Presenter;
15
 import com.reactnativenavigation.presentation.Presenter;
17
 import com.reactnativenavigation.presentation.SideMenuPresenter;
16
 import com.reactnativenavigation.presentation.SideMenuPresenter;
18
-import com.reactnativenavigation.utils.CommandListenerAdapter;
17
+import com.reactnativenavigation.utils.*;
19
 import com.reactnativenavigation.viewcontrollers.ChildControllersRegistry;
18
 import com.reactnativenavigation.viewcontrollers.ChildControllersRegistry;
20
 import com.reactnativenavigation.viewcontrollers.ParentController;
19
 import com.reactnativenavigation.viewcontrollers.ParentController;
21
 import com.reactnativenavigation.viewcontrollers.ViewController;
20
 import com.reactnativenavigation.viewcontrollers.ViewController;
250
         verify(spy).onViewDisappear();
249
         verify(spy).onViewDisappear();
251
     }
250
     }
252
 
251
 
252
+    @Test
253
+    public void onDrawerOpened_drawerOpenedWIthSwipe_visibilityIsUpdated() {
254
+        uut.setLeftController(left);
255
+        uut.setRightController(right);
256
+        uut.ensureViewIsCreated();
257
+
258
+        openDrawerAndAssertVisibility(right, (side) -> side.resolveCurrentOptions().sideMenuRootOptions.right);
259
+        closeDrawerAndAssertVisibility(right, (side) -> side.resolveCurrentOptions().sideMenuRootOptions.right);
260
+
261
+        openDrawerAndAssertVisibility(left, (side) -> side.resolveCurrentOptions().sideMenuRootOptions.left);
262
+        closeDrawerAndAssertVisibility(left, (side) -> side.resolveCurrentOptions().sideMenuRootOptions.left);
263
+    }
264
+
265
+    private void openDrawerAndAssertVisibility(ViewController side, Functions.FuncR1<ViewController, SideMenuOptions> opt) {
266
+        assertThat(opt.run(side).visible.isTrue()).isFalse();
267
+        uut.onDrawerOpened(side.getView());
268
+        assertThat(opt.run(side).visible.isTrue()).isTrue();
269
+    }
270
+
271
+    private void closeDrawerAndAssertVisibility(ViewController side, Functions.FuncR1<ViewController, SideMenuOptions> opt) {
272
+        assertThat(opt.run(side).visible.isTrue()).isTrue();
273
+        uut.onDrawerClosed(side.getView());
274
+        assertThat(opt.run(side).visible.isTrue()).isFalse();
275
+    }
276
+
253
     private void openLeftMenu() {
277
     private void openLeftMenu() {
254
         Options options = new Options();
278
         Options options = new Options();
255
         options.sideMenuRootOptions.left.visible = new Bool(true);
279
         options.sideMenuRootOptions.left.visible = new Bool(true);