package org.fdroid.fdroid.views; import android.app.Application; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.FDroidProvider; import org.fdroid.fdroid.data.FDroidProviderTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; import static org.junit.Assert.assertEquals; // TODO: Use sdk=24 when Robolectric supports this @Config(constants = BuildConfig.class, application = Application.class, sdk = 23) @RunWith(RobolectricGradleTestRunner.class) public class AppDetailsAdapterTest extends FDroidProviderTest { @Before public void setup() { ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context)); } @After public void teardown() { ImageLoader.getInstance().destroy(); FDroidProvider.clearDbHelperSingleton(); } @Test public void appWithNoVersions() { App app = new App(); app.name = "Test App"; app.description = "Test App <b>Description</b>"; AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks); populateViewHolders(adapter); assertEquals(5, 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 * out for us . */ private void populateViewHolders(RecyclerView.Adapter<RecyclerView.ViewHolder> adapter) { ViewGroup parent = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.app_details2_links, null); for (int i = 0; i < adapter.getItemCount(); i++) { RecyclerView.ViewHolder viewHolder = adapter.createViewHolder(parent, adapter.getItemViewType(i)); adapter.bindViewHolder(viewHolder, i); } } private final AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks dummyCallbacks = new AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks() { @Override public boolean isAppDownloading() { return false; } @Override public void enableAndroidBeam() { } @Override public void disableAndroidBeam() { } @Override public void openUrl(String url) { } @Override public void installApk() { } @Override public void installApk(Apk apk) { } @Override public void upgradeApk() { } @Override public void uninstallApk() { } @Override public void installCancel() { } @Override public void launchApk() { } }; }