Browse Source

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 5 years ago
parent
commit
f5ada51620

+ 27
- 3
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java View File

@@ -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);