Niedzielski has uploaded a new change for review. https://gerrit.wikimedia.org/r/317718
Change subject: Add ListCardViewTest ...................................................................... Add ListCardViewTest Bug: T144399 Change-Id: I1e1b1285d2dab4c99fee9822d63199402f7479b6 --- A app/src/androidTest/java/org/wikipedia/feed/view/ListCardViewTest.java M app/src/main/java/org/wikipedia/feed/view/ListCardView.java 2 files changed, 97 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/18/317718/1 diff --git a/app/src/androidTest/java/org/wikipedia/feed/view/ListCardViewTest.java b/app/src/androidTest/java/org/wikipedia/feed/view/ListCardViewTest.java new file mode 100644 index 0000000..ad70cff --- /dev/null +++ b/app/src/androidTest/java/org/wikipedia/feed/view/ListCardViewTest.java @@ -0,0 +1,95 @@ +package org.wikipedia.feed.view; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.RecyclerView.Adapter; +import android.view.View; +import android.view.ViewGroup; + +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.theories.Theory; +import org.junit.experimental.theories.suppliers.TestedOn; +import org.wikipedia.feed.model.Card; +import org.wikipedia.test.ViewTest; +import org.wikipedia.theme.Theme; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.wikipedia.feed.view.FeedAdapter.Callback; +import static org.wikipedia.test.ViewTest.LayoutDirection.LOCALE; + +public class ListCardViewTest extends ViewTest { + private ListCardView<Card> subject; + + @Before public void setUp() { + setUp(WIDTH_DP_S, LOCALE, FONT_SCALES[0], Theme.LIGHT); + subject = new Subject(ctx()); + } + + @Theory public void testSetCallback(@TestedOn(ints = {0, 1}) int nonnullHeader, + @TestedOn(ints = {0, 1}) int nonnullCallback) { + CardHeaderView header = nonnullHeader == 0 ? null : mock(CardHeaderView.class); + if (header != null) { + subject.header(header); + } + + Callback callback = nonnullCallback == 0 ? null : mock(FeedAdapter.Callback.class); + subject.setCallback(callback); + assertThat(subject.getCallback(), is(callback)); + if (header != null) { + verify(header).setCallback(eq(callback)); + } + } + + @Theory public void testSet(@TestedOn(ints = {0, 1}) int nonnull) { + Adapter<?> adapter = nonnull == 0 ? null : mock(Adapter.class); + subject.set(adapter); + //noinspection rawtypes + assertThat(subject.recyclerView.getAdapter(), is((Adapter) adapter)); + } + + @Theory public void testUpdate(@TestedOn(ints = {0, 1}) int nonnull) { + Adapter<?> adapter = nonnull == 0 ? null : spy(new NullAdapter()); + subject.set(adapter); + subject.update(); + if (adapter != null) { + verify(adapter).notifyDataSetChanged(); + } + } + + @Test public void testHeader() { + View header = mock(View.class); + subject.header(header); + assertThat(subject.headerView, is(header)); + } + + @Test public void testLargeHeader() { + View header = mock(View.class); + subject.largeHeader(header); + assertThat(subject.largeHeaderView, is(header)); + } + + public static class NullAdapter extends Adapter<RecyclerView.ViewHolder> { + @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return null; + } + + @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + } + + @Override public int getItemCount() { + return 0; + } + } + + private static class Subject extends ListCardView<Card> { + Subject(Context context) { + super(context); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/org/wikipedia/feed/view/ListCardView.java b/app/src/main/java/org/wikipedia/feed/view/ListCardView.java index 0bfaf24..f2e7972 100644 --- a/app/src/main/java/org/wikipedia/feed/view/ListCardView.java +++ b/app/src/main/java/org/wikipedia/feed/view/ListCardView.java @@ -56,6 +56,8 @@ largeHeaderView = view; } + /** Called by the constructor. Override to provide custom behavior but otherwise do not call + directly. */ protected void initRecycler(@NonNull RecyclerView recyclerView) { recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.addItemDecoration(new DrawableItemDecoration(getContext(), -- To view, visit https://gerrit.wikimedia.org/r/317718 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1e1b1285d2dab4c99fee9822d63199402f7479b6 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits