Merge "Fix WidgetsSearchBarControllerTest" into sc-dev

This commit is contained in:
Steven Ng
2021-05-20 23:43:11 +00:00
committed by Android (Google) Code Review
2 changed files with 30 additions and 9 deletions
@@ -27,7 +27,12 @@ public class TestActivity extends BaseActivity implements ActivityContext {
@Override
public BaseDragLayer getDragLayer() {
return null;
return new BaseDragLayer(this, /* attrs= */ null, /* alphaChannelCount= */ 1) {
@Override
public void recreateControllers() {
// Do nothing.
}
};
}
@Override
@@ -19,24 +19,27 @@ package com.android.launcher3.widget.picker.search;
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import android.content.Context;
import android.view.View;
import android.widget.ImageButton;
import com.android.launcher3.ExtendedEditText;
import com.android.launcher3.search.SearchAlgorithm;
import com.android.launcher3.testing.TestActivity;
import com.android.launcher3.widget.model.WidgetsListBaseEntry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import java.util.ArrayList;
@@ -44,7 +47,9 @@ import java.util.ArrayList;
public class WidgetsSearchBarControllerTest {
private WidgetsSearchBarController mController;
private Context mContext;
// TODO: Replace ActivityController with ActivityScenario, which is the recommended way for
// activity testing.
private ActivityController<TestActivity> mActivityController;
private ExtendedEditText mEditText;
private ImageButton mCancelButton;
@Mock
@@ -55,13 +60,20 @@ public class WidgetsSearchBarControllerTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mEditText = new ExtendedEditText(mContext);
mCancelButton = new ImageButton(mContext);
mActivityController = Robolectric.buildActivity(TestActivity.class);
TestActivity testActivity = mActivityController.setup().get();
mEditText = new ExtendedEditText(testActivity);
mCancelButton = new ImageButton(testActivity);
mController = new WidgetsSearchBarController(
mSearchAlgorithm, mEditText, mCancelButton, mSearchModeListener);
}
@After
public void tearDown() {
mActivityController.destroy();
}
@Test
public void onSearchResult_shouldInformSearchModeListener() {
ArrayList<WidgetsListBaseEntry> entries = new ArrayList<>();
@@ -119,14 +131,18 @@ public class WidgetsSearchBarControllerTest {
public void cancelSearch_shouldInformSearchModeListenerToClearResultsAndExitSearch() {
mCancelButton.performClick();
verify(mSearchModeListener).exitSearchMode();
// 1 time explicitly from the cancel button on click listener.
// Another from the setText("") the cancel button on click listener causing afterTextChange.
verify(mSearchModeListener, times(2)).exitSearchMode();
}
@Test
public void cancelSearch_shouldCancelSearch() {
mCancelButton.performClick();
verify(mSearchAlgorithm).cancel(true);
// 1 time explicitly from the cancel button on click listener.
// Another from the setText("") the cancel button on click listener causing afterTextChange.
verify(mSearchAlgorithm, times(2)).cancel(true);
verifyNoMoreInteractions(mSearchAlgorithm);
}