Skip to content

Commit

Permalink
update test
Browse files Browse the repository at this point in the history
  • Loading branch information
maRci002 committed Jan 30, 2024
1 parent d9033d8 commit de5ba9b
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -681,9 +681,14 @@ public void unregisterOnBackInvokedCallback() {
}
}

final OnBackInvokedCallback onBackInvokedCallback =
private final OnBackInvokedCallback onBackInvokedCallback =
Build.VERSION.SDK_INT < 33 ? null : createOnBackInvokedCallback();

@VisibleForTesting
protected OnBackInvokedCallback getOnBackInvokedCallback() {
return onBackInvokedCallback;
}

@NonNull
@TargetApi(33)
@RequiresApi(33)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public void itUnregistersOnBackInvokedCallbackOnRelease() {
}

@Test
@Config(maxSdk = Build.VERSION_CODES.S_V2)
@Config(sdk = Build.VERSION_CODES.S_V2)
public void onBackInvokedCallbackIsNullForSdk32OrLower() {
Intent intent = FlutterActivity.createDefaultIntent(ctx);
ActivityController<FlutterActivity> activityController =
Expand All @@ -137,58 +137,65 @@ public void onBackInvokedCallbackIsNullForSdk32OrLower() {

assertNull(
"onBackInvokedCallback should be null for SDK 32 or lower",
flutterActivity.onBackInvokedCallback);
flutterActivity.getOnBackInvokedCallback());
}

@Test
@Config(sdk = Build.VERSION_CODES.TIRAMISU)
@TargetApi(Build.VERSION_CODES.TIRAMISU)
public void onBackInvokedCallbackCallsOnBackPressedForSdk33() {
Intent intent = FlutterActivityWithReportFullyDrawn.createDefaultIntent(ctx);
ActivityController<FlutterActivityWithReportFullyDrawn> activityController =
Robolectric.buildActivity(FlutterActivityWithReportFullyDrawn.class, intent);
FlutterActivityWithReportFullyDrawn activity = spy(activityController.get());
Intent intent = FlutterActivity.createDefaultIntent(ctx);
ActivityController<FlutterActivity> activityController =
Robolectric.buildActivity(FlutterActivity.class, intent);
FlutterActivity activity = activityController.get();

activity.onCreate(null);

OnBackInvokedCallback callback = activity.getOnBackInvokedCallback();
assertNotNull(
"onBackInvokedCallback should not be null for SDK 33", activity.onBackInvokedCallback);
"onBackInvokedCallback should not be null for SDK 33, actual:"
+ (callback != null ? callback.getClass().getName() : "null"),
callback);

OnBackInvokedCallback callback = activity.onBackInvokedCallback;
FlutterActivity spyActivity = spy(activity);

callback.onBackInvoked();
verify(activity, times(1)).onBackPressed();
verify(spyActivity, times(1)).onBackPressed();
}

@Test
@Config(sdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
@TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
public void itHandlesOnBackAnimationCallbackAsExpectedForSdk34OrHigher() {
Intent intent = FlutterActivityWithReportFullyDrawn.createDefaultIntent(ctx);
ActivityController<FlutterActivityWithReportFullyDrawn> activityController =
Robolectric.buildActivity(FlutterActivityWithReportFullyDrawn.class, intent);
FlutterActivityWithReportFullyDrawn activity = spy(activityController.get());
Intent intent = FlutterActivity.createDefaultIntent(ctx);
ActivityController<FlutterActivity> activityController =
Robolectric.buildActivity(FlutterActivity.class, intent);
FlutterActivity activity = spy(activityController.get());

activity.onCreate(null);

OnBackInvokedCallback callback = activity.getOnBackInvokedCallback();

assertTrue(
"onBackInvokedCallback should be an instance of OnBackAnimationCallback for SDK 34 or higher",
activity.onBackInvokedCallback instanceof OnBackAnimationCallback);
"onBackInvokedCallback should be an instance of OnBackAnimationCallback for SDK 34 or higher, actual:"
+ (callback != null ? callback.getClass().getName() : "null"),
callback instanceof OnBackAnimationCallback);

OnBackAnimationCallback callback = (OnBackAnimationCallback) activity.onBackInvokedCallback;
OnBackAnimationCallback aCallback = (OnBackAnimationCallback) callback;
FlutterActivity spyActivity = spy(activity);

BackEvent mockBackEvent = mock(BackEvent.class);
callback.onBackStarted(mockBackEvent);
verify(activity, times(1)).startBackGesture(mockBackEvent);
aCallback.onBackStarted(mockBackEvent);
verify(spyActivity, times(1)).startBackGesture(mockBackEvent);

callback.onBackProgressed(mockBackEvent);
verify(activity, times(1)).updateBackGestureProgress(mockBackEvent);
aCallback.onBackProgressed(mockBackEvent);
verify(spyActivity, times(1)).updateBackGestureProgress(mockBackEvent);

callback.onBackInvoked();
verify(activity, times(1)).commitBackGesture();
aCallback.onBackInvoked();
verify(spyActivity, times(1)).commitBackGesture();

callback.onBackCancelled();
verify(activity, times(1)).cancelBackGesture();
aCallback.onBackCancelled();
verify(spyActivity, times(1)).cancelBackGesture();
}

@Test
Expand Down

0 comments on commit de5ba9b

Please sign in to comment.