Bug 1252610 - Expand TestTopSites to cover the empty SuggestedSites case r=liuche
There is some duplication of the column names, however we're aiming to remove
all the MatrixCursor stuff in
Bug 1249018 anyways.
MozReview-Commit-ID: 2y86EQLqc2c
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/db/StubSuggestedSites.java
@@ -0,0 +1,60 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.gecko.db;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+
+import org.mozilla.gecko.db.BrowserContract.Bookmarks;
+
+import java.util.List;
+import java.util.Locale;
+
+public class StubSuggestedSites implements SuggestedSites {
+ @Override
+ public Cursor get(int limit) {
+ return get(limit, null, null);
+ }
+
+ @Override
+ public Cursor get(int limit, Locale locale) {
+ return get(limit, locale, null);
+ }
+
+ @Override
+ public Cursor get(int limit, List<String> excludeUrls) {
+ return get(limit, null, excludeUrls);
+ }
+
+ @Override
+ public Cursor get(int limit, Locale locale, List<String> excludeUrls) {
+ return new MatrixCursor(new String[] {
+ Bookmarks._ID,
+ Bookmarks.URL,
+ Bookmarks.TITLE
+ });
+ }
+
+ @Override
+ public boolean contains(String url) {
+ return false;
+ }
+
+ @Override
+ public String getImageUrlForUrl(String url) {
+ return null;
+ }
+
+ @Override
+ public String getBackgroundColorForUrl(String url) {
+ return null;
+ }
+
+ @Override
+ public boolean hideSite(String url) {
+ return false;
+ }
+}
--- a/mobile/android/tests/background/junit3/src/org/mozilla/gecko/background/db/TestTopSites.java
+++ b/mobile/android/tests/background/junit3/src/org/mozilla/gecko/background/db/TestTopSites.java
@@ -3,16 +3,17 @@
package org.mozilla.gecko.background.db;
import org.mozilla.gecko.GeckoProfile;
import org.mozilla.gecko.db.BrowserContract;
import org.mozilla.gecko.db.BrowserContract.Combined;
import org.mozilla.gecko.db.LocalSuggestedSites;
+import org.mozilla.gecko.db.StubSuggestedSites;
import org.mozilla.gecko.db.SuggestedSites;
import org.mozilla.gecko.sync.setup.Constants;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
@@ -22,37 +23,52 @@ import android.test.ActivityInstrumentat
* Exercise BrowserDB's getTopSites
*
* @author ahunt
*
*/
public class TestTopSites extends ActivityInstrumentationTestCase2<Activity> {
Context mContext;
SuggestedSites mSuggestedSites;
+ SuggestedSites mEmptySuggestedSites;
public TestTopSites() {
super(Activity.class);
}
@Override
public void setUp() {
mContext = getInstrumentation().getTargetContext();
mSuggestedSites = new LocalSuggestedSites(mContext);
+ mEmptySuggestedSites = new StubSuggestedSites();
}
@Override
public void tearDown() {
GeckoProfile.get(mContext, Constants.DEFAULT_PROFILE).getDB().setSuggestedSites(null);
}
- public void testGetTopSites() {
+ public void testTopSites() {
+ verifyGetTopSites(mContext, mSuggestedSites);
+ }
+
+ public void testTopSitesWithEmptySuggestedSites() {
+ GeckoProfile.get(mContext, Constants.DEFAULT_PROFILE).getDB().setSuggestedSites(mEmptySuggestedSites);
+
+ verifyGetTopSites(mContext, mEmptySuggestedSites);
+ }
+
+ private static void verifyGetTopSites(Context context, SuggestedSites suggestedSites) {
+ // By default we're using StubBrowserDB which has no suggested sites available.
+ GeckoProfile.get(context, Constants.DEFAULT_PROFILE).getDB().setSuggestedSites(suggestedSites);
+
final int SUGGESTED_LIMIT = 6;
final int TOTAL_LIMIT = 50;
- ContentResolver cr = mContext.getContentResolver();
+ ContentResolver cr = context.getContentResolver();
final Uri uri = BrowserContract.TopSites.CONTENT_URI
.buildUpon()
.appendQueryParameter(BrowserContract.PARAM_PROFILE,
Constants.DEFAULT_PROFILE)
.appendQueryParameter(BrowserContract.PARAM_LIMIT,
String.valueOf(SUGGESTED_LIMIT))
.appendQueryParameter(BrowserContract.PARAM_SUGGESTEDSITES_LIMIT,
@@ -66,24 +82,26 @@ public class TestTopSites extends Activi
Combined.BOOKMARK_ID,
Combined.HISTORY_ID },
null,
null,
null);
int suggestedCount = 0;
try {
- while (c.moveToNext()) {
- int type = c.getInt(c.getColumnIndexOrThrow(BrowserContract.Bookmarks.TYPE));
- assertEquals(BrowserContract.TopSites.TYPE_SUGGESTED, type);
- suggestedCount++;
+ if (c.moveToFirst()) {
+ do {
+ int type = c.getInt(c.getColumnIndexOrThrow(BrowserContract.Bookmarks.TYPE));
+ assertEquals(BrowserContract.TopSites.TYPE_SUGGESTED, type);
+ suggestedCount++;
+ } while (c.moveToNext());
}
} finally {
c.close();
}
- Cursor suggestedSitesCursor = mSuggestedSites.get(SUGGESTED_LIMIT);
+ Cursor suggestedSitesCursor = suggestedSites.get(SUGGESTED_LIMIT);
assertEquals(suggestedSitesCursor.getCount(), suggestedCount);
suggestedSitesCursor.close();
}
}