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:
parent
e34f289246
commit
c3424f9ff3
@ -136,7 +136,7 @@ public class AppDetailsRecyclerViewAdapter
|
|||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setShowVersions(boolean showVersions) {
|
void setShowVersions(boolean showVersions) {
|
||||||
this.showVersions = showVersions;
|
this.showVersions = showVersions;
|
||||||
boolean itemsWereRemoved = items.removeAll(versions);
|
boolean itemsWereRemoved = items.removeAll(versions);
|
||||||
int startIndex = items.indexOf(VIEWTYPE_VERSIONS) + 1;
|
int startIndex = items.indexOf(VIEWTYPE_VERSIONS) + 1;
|
||||||
|
@ -304,6 +304,6 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
|
|
||||||
AppProvider.Helper.recalculatePreferredMetadata(context);
|
AppProvider.Helper.recalculatePreferredMetadata(context);
|
||||||
|
|
||||||
return AppProvider.Helper.findSpecificApp(context.getContentResolver(), id, 1, Cols.ALL);
|
return AppProvider.Helper.findSpecificApp(context.getContentResolver(), id, repoId, Cols.ALL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ package org.fdroid.fdroid.data;
|
|||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.content.ContentValues;
|
import android.content.ContentValues;
|
||||||
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
@ -125,6 +126,7 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
assertEquals(4, RepoProvider.Helper.all(context).size());
|
assertEquals(4, RepoProvider.Helper.all(context).size());
|
||||||
|
|
||||||
Repo mock1 = insertRepo(
|
Repo mock1 = insertRepo(
|
||||||
|
context,
|
||||||
"https://mock-repo-1.example.com/fdroid/repo",
|
"https://mock-repo-1.example.com/fdroid/repo",
|
||||||
"Just a made up repo",
|
"Just a made up repo",
|
||||||
"ABCDEF1234567890",
|
"ABCDEF1234567890",
|
||||||
@ -132,6 +134,7 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Repo mock2 = insertRepo(
|
Repo mock2 = insertRepo(
|
||||||
|
context,
|
||||||
"http://mock-repo-2.example.com/fdroid/repo",
|
"http://mock-repo-2.example.com/fdroid/repo",
|
||||||
"Mock repo without a name",
|
"Mock repo without a name",
|
||||||
"0123456789ABCDEF"
|
"0123456789ABCDEF"
|
||||||
@ -167,6 +170,7 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
@Test
|
@Test
|
||||||
public void canDeleteRepo() {
|
public void canDeleteRepo() {
|
||||||
Repo mock1 = insertRepo(
|
Repo mock1 = insertRepo(
|
||||||
|
context,
|
||||||
"https://mock-repo-1.example.com/fdroid/repo",
|
"https://mock-repo-1.example.com/fdroid/repo",
|
||||||
"Just a made up repo",
|
"Just a made up repo",
|
||||||
"ABCDEF1234567890",
|
"ABCDEF1234567890",
|
||||||
@ -174,6 +178,7 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Repo mock2 = insertRepo(
|
Repo mock2 = insertRepo(
|
||||||
|
context,
|
||||||
"http://mock-repo-2.example.com/fdroid/repo",
|
"http://mock-repo-2.example.com/fdroid/repo",
|
||||||
"Mock repo without a name",
|
"Mock repo without a name",
|
||||||
"0123456789ABCDEF"
|
"0123456789ABCDEF"
|
||||||
@ -191,11 +196,11 @@ public class RepoProviderTest extends FDroidProviderTest {
|
|||||||
assertEquals(mock2.id, afterDelete.get(4).id);
|
assertEquals(mock2.id, afterDelete.get(4).id);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Repo insertRepo(String address, String description, String fingerprint) {
|
public Repo insertRepo(Context context, String address, String description, String fingerprint) {
|
||||||
return insertRepo(address, description, fingerprint, null);
|
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();
|
ContentValues values = new ContentValues();
|
||||||
values.put(RepoTable.Cols.ADDRESS, address);
|
values.put(RepoTable.Cols.ADDRESS, address);
|
||||||
values.put(RepoTable.Cols.DESCRIPTION, description);
|
values.put(RepoTable.Cols.DESCRIPTION, description);
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package org.fdroid.fdroid.views;
|
package org.fdroid.fdroid.views;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
import android.content.ContentValues;
|
||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -8,12 +9,17 @@ import android.view.ViewGroup;
|
|||||||
import com.nostra13.universalimageloader.core.ImageLoader;
|
import com.nostra13.universalimageloader.core.ImageLoader;
|
||||||
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
|
||||||
|
|
||||||
|
import org.fdroid.fdroid.Assert;
|
||||||
import org.fdroid.fdroid.BuildConfig;
|
import org.fdroid.fdroid.BuildConfig;
|
||||||
|
import org.fdroid.fdroid.Preferences;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.data.Apk;
|
import org.fdroid.fdroid.data.Apk;
|
||||||
import org.fdroid.fdroid.data.App;
|
import org.fdroid.fdroid.data.App;
|
||||||
|
import org.fdroid.fdroid.data.AppProviderTest;
|
||||||
import org.fdroid.fdroid.data.FDroidProvider;
|
import org.fdroid.fdroid.data.FDroidProvider;
|
||||||
import org.fdroid.fdroid.data.FDroidProviderTest;
|
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.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -27,22 +33,35 @@ import static org.junit.Assert.assertEquals;
|
|||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class AppDetailsAdapterTest extends FDroidProviderTest {
|
public class AppDetailsAdapterTest extends FDroidProviderTest {
|
||||||
|
|
||||||
|
private App app;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
|
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
|
@After
|
||||||
public void teardown() {
|
public void teardown() {
|
||||||
ImageLoader.getInstance().destroy();
|
ImageLoader.getInstance().destroy();
|
||||||
FDroidProvider.clearDbHelperSingleton();
|
FDroidProvider.clearDbHelperSingleton();
|
||||||
|
Preferences.clearSingletonForTesting();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void appWithNoVersions() {
|
public void appWithNoVersionsOrScreenshots() {
|
||||||
App app = new App();
|
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
|
||||||
app.name = "Test App";
|
populateViewHolders(adapter);
|
||||||
app.description = "Test App <b>Description</b>";
|
|
||||||
|
assertEquals(3, adapter.getItemCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void appWithScreenshots() {
|
||||||
|
app.phoneScreenshots = new String[] {"screenshot1.png", "screenshot2.png"};
|
||||||
|
|
||||||
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
|
AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks);
|
||||||
populateViewHolders(adapter);
|
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.
|
* 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
|
* Doesn't care about what type of holder it should be, the adapter is able to figure all that
|
||||||
|
Loading…
x
Reference in New Issue
Block a user