Add button to remove saved search query

TODO: move all saved query related logic into its own manager instead of
leaving them in SearchFragment.

Change-Id: I9635140eb507331246f9035a23138421cfa4b50a
Fix: 27391895
Test: make RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-03-14 17:14:05 -07:00
parent 5fa4df348b
commit fe44549626
8 changed files with 135 additions and 29 deletions

View File

@@ -36,10 +36,11 @@ import static com.google.common.truth.Truth.assertThat;
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SavedQueryRecorderTest {
public class SavedQueryRecorderAndRemoverTest {
private Context mContext;
private SavedQueryRecorder mRecorder;
private SavedQueryRemover mRemover;
@Before
public void setUp() {
@@ -52,16 +53,25 @@ public class SavedQueryRecorderTest {
}
@Test
public void canSaveQueryToDb() {
public void canSaveAndRemoveQuery() {
final String query = "test";
mRecorder = new SavedQueryRecorder(mContext, query);
mRemover = new SavedQueryRemover(mContext, query);
// Record a new query and load all queries from DB
mRecorder.loadInBackground();
final SavedQueryLoader loader = new SavedQueryLoader(mContext);
List<? extends SearchResult> results = loader.loadInBackground();
// Should contain the newly recorded query
assertThat(results.size()).isEqualTo(1);
assertThat(results.get(0).title).isEqualTo(query);
// Remove the query and load all queries from DB
mRemover.loadInBackground();
results = loader.loadInBackground();
// Saved query list should be empty because it's removed.
assertThat(results).isEmpty();
}
}

View File

@@ -45,6 +45,8 @@ public class SavedQueryViewHolderTest {
private Context mContext;
private SavedQueryViewHolder mHolder;
private View mView;
private View mTitleView;
private View mRemoveButton;
@Before
public void setUp() {
@@ -52,6 +54,8 @@ public class SavedQueryViewHolderTest {
mContext = RuntimeEnvironment.application;
mView = LayoutInflater.from(mContext)
.inflate(R.layout.search_saved_query_item, null);
mTitleView = mView.findViewById(android.R.id.title);
mRemoveButton = mView.findViewById(android.R.id.icon);
mHolder = new SavedQueryViewHolder(mView);
}
@@ -60,8 +64,10 @@ public class SavedQueryViewHolderTest {
final SearchResult result = mock(SearchResult.class);
mHolder.onBind(mSearchFragment, result);
mView.performClick();
mTitleView.performClick();
mRemoveButton.performClick();
verify(mSearchFragment).onSavedQueryClicked(any(CharSequence.class));
verify(mSearchFragment).onRemoveSavedQueryClicked(any(CharSequence.class));
}
}

View File

@@ -276,7 +276,6 @@ public class SearchFragmentTest {
@Test
public void onLoadFinished_ShowsFeedback() {
when(mFeatureFactory.searchFeatureProvider
.getDatabaseSearchLoader(any(Context.class), anyString()))
.thenReturn(new MockDBLoader(RuntimeEnvironment.application));