Skip to content

Commit ec74771

Browse files
guycavshkl
authored andcommitted
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.
1 parent 38a6f5a commit ec74771

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/sidemenu/SideMenuControllerTest.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,13 @@
88

99
import com.reactnativenavigation.BaseTest;
1010
import com.reactnativenavigation.mocks.SimpleComponentViewController;
11-
import com.reactnativenavigation.parse.Options;
12-
import com.reactnativenavigation.parse.SideMenuOptions;
11+
import com.reactnativenavigation.parse.*;
1312
import com.reactnativenavigation.parse.params.Bool;
1413
import com.reactnativenavigation.parse.params.Number;
1514
import com.reactnativenavigation.parse.params.Text;
1615
import com.reactnativenavigation.presentation.Presenter;
1716
import com.reactnativenavigation.presentation.SideMenuPresenter;
18-
import com.reactnativenavigation.utils.CommandListenerAdapter;
17+
import com.reactnativenavigation.utils.*;
1918
import com.reactnativenavigation.viewcontrollers.ChildControllersRegistry;
2019
import com.reactnativenavigation.viewcontrollers.ParentController;
2120
import com.reactnativenavigation.viewcontrollers.ViewController;
@@ -250,6 +249,31 @@ public void rightMenuOpen_visibilityEventsAreEmitted() {
250249
verify(spy).onViewDisappear();
251250
}
252251

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+
253277
private void openLeftMenu() {
254278
Options options = new Options();
255279
options.sideMenuRootOptions.left.visible = new Bool(true);

0 commit comments

Comments
 (0)