diff --git a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java index 59836d8b2..c68440abf 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java @@ -1,6 +1,5 @@ package org.fdroid.fdroid.data; -import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; @@ -8,17 +7,12 @@ import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; -import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.Schema.CatJoinTable; import org.fdroid.fdroid.data.Schema.CategoryTable; import org.fdroid.fdroid.data.Schema.AppMetadataTable; import org.fdroid.fdroid.data.Schema.PackageTable; import org.fdroid.fdroid.data.Schema.CategoryTable.Cols; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - public class CategoryProvider extends FDroidProvider { public static final class Helper { @@ -53,47 +47,6 @@ public class CategoryProvider extends FDroidProvider { cursor.close(); } } - - public static String getCategoryAll(Context context) { - return context.getString(R.string.category_All); - } - - public static String getCategoryWhatsNew(Context context) { - return context.getString(R.string.category_Whats_New); - } - - public static String getCategoryRecentlyUpdated(Context context) { - return context.getString(R.string.category_Recently_Updated); - } - - public static List categories(Context context) { - final ContentResolver resolver = context.getContentResolver(); - final Uri uri = CategoryProvider.getAllCategories(); - final String[] projection = {Cols.NAME}; - final Cursor cursor = resolver.query(uri, projection, null, null, null); - List categories = new ArrayList<>(30); - if (cursor != null) { - if (cursor.getCount() > 0) { - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - final String name = cursor.getString(0); - categories.add(name); - cursor.moveToNext(); - } - } - cursor.close(); - } - Collections.sort(categories); - - // Populate the category list with the real categories, and the - // locally generated meta-categories for "What's New", "Recently - // Updated" and "All"... - categories.add(0, getCategoryAll(context)); - categories.add(0, getCategoryRecentlyUpdated(context)); - categories.add(0, getCategoryWhatsNew(context)); - - return categories; - } } private class Query extends QueryBuilder { diff --git a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java index 986491b42..55ee6d8b3 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java @@ -1,12 +1,12 @@ package org.fdroid.fdroid.data; import android.app.Application; +import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import org.fdroid.fdroid.BuildConfig; -import org.fdroid.fdroid.R; import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.data.Schema.AppMetadataTable.Cols; import org.fdroid.fdroid.mock.MockRepo; @@ -16,6 +16,8 @@ import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import static org.fdroid.fdroid.Assert.assertContainsOnly; @@ -45,10 +47,6 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable", mainRepo); String[] expectedFDroid = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), - "Animal", "Mineral", "Security", @@ -57,20 +55,12 @@ public class CategoryProviderTest extends FDroidProviderTest { }; String[] expectedGP = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), - "GuardianProject", "Office", }; // We overwrite "Security" + "Writing" with "GuardianProject" + "Office" String[] expectedBoth = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), - "Animal", "Mineral", "Vegetable", @@ -79,13 +69,13 @@ public class CategoryProviderTest extends FDroidProviderTest { "Office", }; - assertContainsOnly(CategoryProvider.Helper.categories(context), expectedFDroid); + assertContainsOnly(categories(), expectedFDroid); insertAppWithCategory("info.guardianproject.notepadbot", "NoteCipher", "Office,GuardianProject", gpRepo); - assertContainsOnly(CategoryProvider.Helper.categories(context), expectedBoth); + assertContainsOnly(categories(), expectedBoth); RepoProvider.Helper.purgeApps(context, new MockRepo(mainRepo)); - List categoriesAfterPurge = CategoryProvider.Helper.categories(context); + List categoriesAfterPurge = categories(); assertContainsOnly(categoriesAfterPurge, expectedGP); } @@ -213,11 +203,8 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.rock", "Rock", "Mineral"); insertAppWithCategory("com.banana", "Banana", "Vegetable"); - List categories = CategoryProvider.Helper.categories(context); + List categories = categories(); String[] expected = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), "Animal", "Mineral", "Vegetable", @@ -233,12 +220,8 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable", mainRepo); insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable", mainRepo); - List categories = CategoryProvider.Helper.categories(context); + List categories = categories(); String[] expected = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), - "Animal", "Mineral", "Vegetable", @@ -251,12 +234,8 @@ public class CategoryProviderTest extends FDroidProviderTest { "Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," + "The quick brown fox jumps over the lazy dog,With apostrophe's", additionalRepo); - List categoriesLonger = CategoryProvider.Helper.categories(context); + List categoriesLonger = categories(); String[] expectedLonger = new String[] { - context.getResources().getString(R.string.category_Whats_New), - context.getResources().getString(R.string.category_Recently_Updated), - context.getResources().getString(R.string.category_All), - "Animal", "Mineral", "Vegetable", @@ -276,7 +255,7 @@ public class CategoryProviderTest extends FDroidProviderTest { assertContainsOnly(categoriesLonger, expectedLonger); RepoProvider.Helper.purgeApps(context, new MockRepo(additionalRepo)); - List categoriesAfterPurge = CategoryProvider.Helper.categories(context); + List categoriesAfterPurge = categories(); assertContainsOnly(categoriesAfterPurge, expected); } @@ -289,4 +268,25 @@ public class CategoryProviderTest extends FDroidProviderTest { values.put(Cols.ForWriting.Categories.CATEGORIES, categories); AppProviderTest.insertApp(contentResolver, context, id, name, values, repoId); } + + public List categories() { + final ContentResolver resolver = context.getContentResolver(); + final Uri uri = CategoryProvider.getAllCategories(); + final String[] projection = {Schema.CategoryTable.Cols.NAME}; + final Cursor cursor = resolver.query(uri, projection, null, null, null); + List categories = new ArrayList<>(30); + if (cursor != null) { + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + final String name = cursor.getString(0); + categories.add(name); + cursor.moveToNext(); + } + } + cursor.close(); + } + Collections.sort(categories); + return categories; + } }