Update AppDetailsAdapterTest for apps that don't have screenshots.

While here, also added a couple of new test cases to better ensure the
adapter plays nicely with its items when receiving an app with specific
states.
This commit is contained in:
Peter Serwylo 2017-03-31 09:40:56 +11:00 committed by Hans-Christoph Steiner
parent e34f289246
commit c3424f9ff3
4 changed files with 52 additions and 9 deletions

View File

@ -136,7 +136,7 @@ public class AppDetailsRecyclerViewAdapter
notifyDataSetChanged();
}
private void setShowVersions(boolean showVersions) {
void setShowVersions(boolean showVersions) {
this.showVersions = showVersions;
boolean itemsWereRemoved = items.removeAll(versions);
int startIndex = items.indexOf(VIEWTYPE_VERSIONS) + 1;

View File

@ -304,6 +304,6 @@ public class AppProviderTest extends FDroidProviderTest {
AppProvider.Helper.recalculatePreferredMetadata(context);
return AppProvider.Helper.findSpecificApp(context.getContentResolver(), id, 1, Cols.ALL);
return AppProvider.Helper.findSpecificApp(context.getContentResolver(), id, repoId, Cols.ALL);
}
}

View File

@ -23,6 +23,7 @@ package org.fdroid.fdroid.data;
import android.app.Application;
import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.support.annotation.Nullable;
@ -125,6 +126,7 @@ public class RepoProviderTest extends FDroidProviderTest {
assertEquals(4, RepoProvider.Helper.all(context).size());
Repo mock1 = insertRepo(
context,
"https://mock-repo-1.example.com/fdroid/repo",
"Just a made up repo",
"ABCDEF1234567890",
@ -132,6 +134,7 @@ public class RepoProviderTest extends FDroidProviderTest {
);
Repo mock2 = insertRepo(
context,
"http://mock-repo-2.example.com/fdroid/repo",
"Mock repo without a name",
"0123456789ABCDEF"
@ -167,6 +170,7 @@ public class RepoProviderTest extends FDroidProviderTest {
@Test
public void canDeleteRepo() {
Repo mock1 = insertRepo(
context,
"https://mock-repo-1.example.com/fdroid/repo",
"Just a made up repo",
"ABCDEF1234567890",
@ -174,6 +178,7 @@ public class RepoProviderTest extends FDroidProviderTest {
);
Repo mock2 = insertRepo(
context,
"http://mock-repo-2.example.com/fdroid/repo",
"Mock repo without a name",
"0123456789ABCDEF"
@ -191,11 +196,11 @@ public class RepoProviderTest extends FDroidProviderTest {
assertEquals(mock2.id, afterDelete.get(4).id);
}
protected Repo insertRepo(String address, String description, String fingerprint) {
return insertRepo(address, description, fingerprint, null);
public Repo insertRepo(Context context, String address, String description, String fingerprint) {
return insertRepo(context, address, description, fingerprint, null);
}
protected Repo insertRepo(String address, String description, String fingerprint, @Nullable String name) {
public static Repo insertRepo(Context context, String address, String description, String fingerprint, @Nullable String name) {
ContentValues values = new ContentValues();
values.put(RepoTable.Cols.ADDRESS, address);
values.put(RepoTable.Cols.DESCRIPTION, description);

View File

@ -1,6 +1,7 @@
package org.fdroid.fdroid.views;
import android.app.Application;
import android.content.ContentValues;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
@ -8,12 +9,17 @@ import android.view.ViewGroup;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import org.fdroid.fdroid.Assert;
import org.fdroid.fdroid.BuildConfig;
import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProviderTest;
import org.fdroid.fdroid.data.FDroidProvider;
import org.fdroid.fdroid.data.FDroidProviderTest;
import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.RepoProviderTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@ -27,22 +33,35 @@ import static org.junit.Assert.assertEquals;
@RunWith(RobolectricTestRunner.class)
public class AppDetailsAdapterTest extends FDroidProviderTest {
private App app;
@Before
public void setup() {
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
Preferences.setup(context);
Repo repo = RepoProviderTest.insertRepo(context, "http://www.example.com/fdroid/repo", "", "", "Test Repo");
app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App", new ContentValues(), repo.getId());
}
@After
public void teardown() {
ImageLoader.getInstance().destroy();
FDroidProvider.clearDbHelperSingleton();
Preferences.clearSingletonForTesting();
}
@Test
public void appWithNoVersions() {
App app = new App();
app.name = "Test App";
app.description = "Test App <b>Description</b>";
public void appWithNoVersionsOrScreenshots() {
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
populateViewHolders(adapter);
assertEquals(3, adapter.getItemCount());
}
@Test
public void appWithScreenshots() {
app.phoneScreenshots = new String[] {"screenshot1.png", "screenshot2.png"};
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
populateViewHolders(adapter);
@ -51,6 +70,25 @@ public class AppDetailsAdapterTest extends FDroidProviderTest {
}
@Test
public void appWithVersions() {
Assert.insertApk(context, app, 1);
Assert.insertApk(context, app, 2);
Assert.insertApk(context, app, 3);
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
populateViewHolders(adapter);
// Starts collapsed, now showing versions at all.
assertEquals(3, adapter.getItemCount());
adapter.setShowVersions(true);
assertEquals(6, adapter.getItemCount());
adapter.setShowVersions(false);
assertEquals(3, adapter.getItemCount());
}
/**
* Ensures that every single item in the adapter gets its view holder created and bound.
* Doesn't care about what type of holder it should be, the adapter is able to figure all that