瀏覽代碼

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

+ 27
- 3
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java 查看文件

@@ -8,14 +8,13 @@ import android.view.ViewGroup.LayoutParams;
8 8
 
9 9
 import com.reactnativenavigation.BaseTest;
10 10
 import com.reactnativenavigation.mocks.SimpleComponentViewController;
11
-import com.reactnativenavigation.parse.Options;
12
-import com.reactnativenavigation.parse.SideMenuOptions;
11
+import com.reactnativenavigation.parse.*;
13 12
 import com.reactnativenavigation.parse.params.Bool;
14 13
 import com.reactnativenavigation.parse.params.Number;
15 14
 import com.reactnativenavigation.parse.params.Text;
16 15
 import com.reactnativenavigation.presentation.Presenter;
17 16
 import com.reactnativenavigation.presentation.SideMenuPresenter;
18
-import com.reactnativenavigation.utils.CommandListenerAdapter;
17
+import com.reactnativenavigation.utils.*;
19 18
 import com.reactnativenavigation.viewcontrollers.ChildControllersRegistry;
20 19
 import com.reactnativenavigation.viewcontrollers.ParentController;
21 20
 import com.reactnativenavigation.viewcontrollers.ViewController;
@@ -250,6 +249,31 @@ public class SideMenuControllerTest extends BaseTest {
250 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 277
     private void openLeftMenu() {
254 278
         Options options = new Options();
255 279
         options.sideMenuRootOptions.left.visible = new Bool(true);