@Test public void givenCallback_whenBuild_thenCallbackSet() { RuntimeEnvironment.application.setTheme(R.style.TestSnackbarBuilder_AppTheme); CoordinatorLayout parent = new CoordinatorLayout(RuntimeEnvironment.application); Snackbar snackbar = new SnackbarBuilder(parent) .message("message") .actionText("action") .duration(Snackbar.LENGTH_SHORT) .callback(callback) .build(); snackbar.show(); snackbar.dismiss(); verify(callback).onDismissed(snackbar, Callback.DISMISS_EVENT_MANUAL); }
/** * Add a callback to the Snackbar for various events. * * @param callback The callback to be added. * @return This instance. */ @NonNull @SuppressWarnings("WeakerAccess") public SnackbarWrapper addCallback(Callback callback) { snackbar.addCallback(callback); return this; }
/** * Adds multiple callbacks to the Snackbar for various events. * * @param callbacks The callbacks to be added. * @return This instance. */ @NonNull @SuppressWarnings("WeakerAccess") public SnackbarWrapper addCallbacks(List<Callback> callbacks) { int callbacksSize = callbacks.size(); for (int i = 0; i < callbacksSize; i++) { addCallback(callbacks.get(i)); } return this; }
@Test public void whenOnSnackbarDismissedWithEventType_thenSnackbarDismissedMessageLogged() { callbackUnderTest.onSnackbarDismissed(snackbar, Callback.DISMISS_EVENT_TIMEOUT); List<LogItem> logs = ShadowLog.getLogsForTag(SnackbarCallback.class.getSimpleName()); assertThat(logs).hasSize(1); assertThat(logs.get(0).msg).isEqualTo("onSnackbarDismissed method = 2"); }
@Test public void whenOnDismissed_thenCallbackInformedOfEvent() { int dismissEvent = Callback.DISMISS_EVENT_MANUAL; callbackUnderTest.onDismissed(snackbar, dismissEvent); verify(callback).onDismissed(snackbar, dismissEvent); }
@Test public void whenAddCallback_thenCallbackAdded() { wrapper.addCallback(callback); wrapper.show(); wrapper.dismiss(); verify(callback).onDismissed(snackbar, Callback.DISMISS_EVENT_MANUAL); }
@Test public void whenAddCallbacks_thenCallbacksAdded() { List<Snackbar.Callback> callbacks = new ArrayList<>(); callbacks.add(callback); callbacks.add(snackbarCallback); wrapper.addCallbacks(callbacks); wrapper.show(); wrapper.dismiss(); verify(callback).onDismissed(snackbar, Callback.DISMISS_EVENT_MANUAL); verify(snackbarCallback).onSnackbarManuallyDismissed(snackbar); }
@Test public void whenCallback_thenCallbackSet() { SnackbarBuilder builder = createBuilder(); Callback callback = new Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { super.onDismissed(snackbar, event); } }; builder.callback(callback); assertThat(builder.callbacks).containsOnly(callback); }
void onDeviceLoadFinished(final Loader<DevicesLoadResult> loader, DevicesLoadResult result) { if (!result.isPartialResult) { reset(); return; } retryCount++; if (retryCount > MAX_RETRIES) { // tried too many times, giving up. :( partialContentBar.setVisibility(View.INVISIBLE); return; } if (!isLoadingSnackbarVisible) { isLoadingSnackbarVisible = true; View view = getView(); if (view != null) { Snackbar.make(view, "Unable to load all devices", Snackbar.LENGTH_SHORT) .addCallback(new Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { super.onDismissed(snackbar, event); isLoadingSnackbarVisible = false; } }).show(); } } partialContentBar.setVisibility(View.VISIBLE); ((DevicesLoader) loader).setUseLongTimeoutsOnNextLoad(true); // FIXME: is it OK to call forceLoad() in loader callbacks? Test and be certain. EZ.runOnMainThread(() -> { if (isResumed()) { loader.forceLoad(); } }); }
@Before public void before() { MockitoAnnotations.initMocks(this); callbackUnderTest = new SnackbarCallback() { @Override public void onSnackbarShown(Snackbar snackbar) { super.onSnackbarShown(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarShown"); } @Override public void onSnackbarDismissed(Snackbar snackbar) { super.onSnackbarDismissed(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarDismissed"); } @Override public void onSnackbarDismissed(Snackbar snackbar, @Callback.DismissEvent int dismissEvent) { super.onSnackbarDismissed(snackbar, dismissEvent); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarDismissed method = " + dismissEvent); } @Override public void onSnackbarActionPressed(Snackbar snackbar) { super.onSnackbarActionPressed(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarActionPressed"); } @Override public void onSnackbarSwiped(Snackbar snackbar) { super.onSnackbarSwiped(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarSwiped"); } @Override public void onSnackbarTimedOut(Snackbar snackbar) { super.onSnackbarTimedOut(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarTimedOut"); } @Override public void onSnackbarManuallyDismissed(Snackbar snackbar) { super.onSnackbarManuallyDismissed(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarManuallyDismissed"); } @Override public void onSnackbarDismissedAfterAnotherShown(Snackbar snackbar) { super.onSnackbarDismissedAfterAnotherShown(snackbar); Log.v(SnackbarCallback.class.getSimpleName(), "onSnackbarDismissedAfterAnotherShown"); } }; }
/** * Create the callback wrapper from a standard Callback. * * @param callback The callback to wrap. */ public SnackbarCallbackWrapper(Callback callback) { this.callback = callback; }