/** * Copyright (c) 2014-present, Facebook, Inc. * All rights reserved. * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.react.tests; import android.view.View; import com.facebook.react.testing.ReactAppInstrumentationTestCase; import com.facebook.react.testing.ReactInstanceSpecForTest; import com.facebook.react.bridge.BaseJavaModule; import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.views.swiperefresh.ReactSwipeRefreshLayout; /** * Test case for {@link ReactSwipeRefreshLayout}. */ public class ReactSwipeRefreshLayoutTestCase extends ReactAppInstrumentationTestCase { private class SwipeRefreshLayoutRecordingModule extends BaseJavaModule { private int mCount = 0; @Override public String getName() { return "SwipeRefreshLayoutRecordingModule"; } @ReactMethod public void onRefresh() { mCount++; } public int getCount() { return mCount; } } private interface SwipeRefreshLayoutTestModule extends JavaScriptModule { void setRows(int rows); } private final SwipeRefreshLayoutRecordingModule mRecordingModule = new SwipeRefreshLayoutRecordingModule(); @Override protected String getReactApplicationKeyUnderTest() { return "SwipeRefreshLayoutTestApp"; } @Override protected ReactInstanceSpecForTest createReactInstanceSpecForTest() { return super.createReactInstanceSpecForTest() .addNativeModule(mRecordingModule) .addJSModule(SwipeRefreshLayoutTestModule.class); } public void testRefreshNoScroll() { View refreshLayout = getViewAtPath(0); createGestureGenerator() .startGesture(refreshLayout.getWidth() / 2, 10) .dragTo(refreshLayout.getWidth() / 2, refreshLayout.getHeight() / 2, 100, 1000) .endGesture(); waitForBridgeAndUIIdle(); assertEquals(1, mRecordingModule.getCount()); } public void testRefreshScroll() { View refreshLayout = getViewAtPath(0); getReactContext().getJSModule(SwipeRefreshLayoutTestModule.class).setRows(100); createGestureGenerator() .startGesture(refreshLayout.getWidth() / 2, 10) .dragTo(refreshLayout.getWidth() / 2, refreshLayout.getHeight() / 2, 100, 1000) .endGesture(); waitForBridgeAndUIIdle(); assertEquals(1, mRecordingModule.getCount()); } public void testNoRefreshAfterScroll() { View refreshLayout = getViewAtPath(0); getReactContext().getJSModule(SwipeRefreshLayoutTestModule.class).setRows(100); createGestureGenerator() .startGesture(refreshLayout.getWidth() / 2, refreshLayout.getHeight() / 2) .dragTo(refreshLayout.getWidth() / 2, 10, 100, 1000) .endGesture(); waitForBridgeAndUIIdle(); createGestureGenerator() .startGesture(refreshLayout.getWidth() / 2, 10) .dragTo(refreshLayout.getWidth() / 2, refreshLayout.getHeight() / 2, 100, 1000) .endGesture(); waitForBridgeAndUIIdle(); assertEquals(0, mRecordingModule.getCount()); } }