use of io.github.hidroh.materialistic.data.TestHnItem in project materialistic by hidroh.
the class ItemActivityTest method testVoteError.
@Test
public void testVoteError() {
Intent intent = new Intent();
intent.putExtra(ItemActivity.EXTRA_ITEM, new TestHnItem(1));
controller.withIntent(intent).create().start().resume();
activity.findViewById(R.id.vote_button).performClick();
verify(userServices).voteUp(any(Context.class), eq("1"), userServicesCallback.capture());
userServicesCallback.getValue().onError(new IOException());
assertEquals(activity.getString(R.string.vote_failed), ShadowToast.getTextOfLatestToast());
}
use of io.github.hidroh.materialistic.data.TestHnItem in project materialistic by hidroh.
the class ItemFragmentMultiPageTest method testBindLocalKidData.
@Test
public void testBindLocalKidData() {
Item story = new TestHnItem(0L);
story.populate(new TestItem() {
@Override
public int getDescendants() {
return 1;
}
@Override
public long[] getKids() {
return new long[] { 1L };
}
});
story.getKidItems()[0].populate(new TestItem() {
@Override
public String getText() {
return "text";
}
@Override
public long[] getKids() {
return new long[] { 2L };
}
@Override
public int getDescendants() {
return 1;
}
});
Bundle args = new Bundle();
args.putParcelable(ItemFragment.EXTRA_ITEM, story);
Fragment fragment = Fragment.instantiate(RuntimeEnvironment.application, ItemFragment.class.getName(), args);
makeVisible(fragment);
assertThat(fragment.getView().findViewById(R.id.empty)).isNotVisible();
RecyclerView recyclerView = (RecyclerView) fragment.getView().findViewById(R.id.recycler_view);
RecyclerView.ViewHolder viewHolder = CustomShadows.customShadowOf(recyclerView.getAdapter()).getViewHolder(0);
assertThat((TextView) viewHolder.itemView.findViewById(R.id.text)).hasTextString("text");
assertThat(viewHolder.itemView.findViewById(R.id.comment)).isVisible();
viewHolder.itemView.findViewById(R.id.comment).performClick();
Intent actual = shadowOf(fragment.getActivity()).getNextStartedActivity();
assertEquals(ItemActivity.class.getName(), actual.getComponent().getClassName());
assertThat(actual).hasExtra(ItemActivity.EXTRA_OPEN_COMMENTS, true);
}
use of io.github.hidroh.materialistic.data.TestHnItem in project materialistic by hidroh.
the class ItemFragmentSinglePageTest method setUp.
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
TestApplication.applicationGraph.inject(this);
reset(hackerNewsClient);
reset(userServices);
shadowOf(((WindowManager) RuntimeEnvironment.application.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()).setHeight(// no preload
0);
shadowOf((ConnectivityManager) RuntimeEnvironment.application.getSystemService(Context.CONNECTIVITY_SERVICE)).setActiveNetworkInfo(ShadowNetworkInfo.newInstance(null, ConnectivityManager.TYPE_WIFI, 0, true, true));
final TestHnItem item0 = new TestHnItem(1, 1) {
@Override
public long getNeighbour(int direction) {
if (direction == Navigable.DIRECTION_DOWN) {
return 4L;
}
return super.getNeighbour(direction);
}
};
item0.populate(new // level 0
TestItem() {
@Override
public String getId() {
return "1";
}
@Override
public String getText() {
return "text";
}
@Override
public int getDescendants() {
return 1;
}
@Override
public long[] getKids() {
return new long[] { 2L };
}
});
final TestHnItem item1 = new TestHnItem(2, 2);
item1.populate(new // level 1
TestItem() {
@Override
public String getId() {
return "2";
}
@Override
public String getParent() {
return "1";
}
@Override
public boolean isDeleted() {
return true;
}
@Override
public String getText() {
return "text";
}
@Override
public int getDescendants() {
return 1;
}
@Override
public long[] getKids() {
return new long[] { 3L };
}
});
item0.getKidItems()[0] = item1;
final TestHnItem item2 = new TestHnItem(3, 3);
item2.populate(new // level 2
TestItem() {
@Override
public String getId() {
return "3";
}
@Override
public long[] getKids() {
return new long[0];
}
@Override
public int getDescendants() {
return 0;
}
@Override
public String getParent() {
return "2";
}
@Override
public boolean isDead() {
return true;
}
});
item1.getKidItems()[0] = item2;
TestHnItem item3 = new TestHnItem(4, 4) {
@Override
public long getNeighbour(int direction) {
if (direction == Navigable.DIRECTION_UP) {
return 1L;
}
return super.getNeighbour(direction);
}
};
item3.populate(new // level 0
TestItem() {
@Override
public String getId() {
return "4";
}
@Override
public String getText() {
return "text";
}
@Override
public int getDescendants() {
return 0;
}
@Override
public long[] getKids() {
return new long[0];
}
});
TestHnItem story = new TestHnItem(0);
story.populate(new TestItem() {
@Override
public long[] getKids() {
return new long[] { 1L, 4L };
}
@Override
public int getDescendants() {
return 4;
}
});
story.getKidItems()[0] = item0;
story.getKidItems()[1] = item3;
Bundle args = new Bundle();
args.putParcelable(ItemFragment.EXTRA_ITEM, story);
fragment = (ItemFragment) Fragment.instantiate(RuntimeEnvironment.application, ItemFragment.class.getName(), args);
controller = Robolectric.buildActivity(ItemFragmentMultiPageTest.TestItemActivity.class);
activity = controller.create().start().resume().visible().get();
PreferenceManager.getDefaultSharedPreferences(activity).edit().putBoolean(activity.getString(R.string.pref_lazy_load), false).apply();
activity.getSupportFragmentManager().beginTransaction().add(R.id.content_frame, fragment, ItemFragment.class.getName()).commit();
recyclerView = (RecyclerView) fragment.getView().findViewById(R.id.recycler_view);
adapter = (SinglePageItemRecyclerViewAdapter) recyclerView.getAdapter();
// auto expand all
viewHolder = (ToggleItemViewHolder) customShadowOf(adapter).getViewHolder(0);
viewHolder1 = (ToggleItemViewHolder) customShadowOf(adapter).getViewHolder(1);
viewHolder2 = (ToggleItemViewHolder) customShadowOf(adapter).getViewHolder(2);
}
use of io.github.hidroh.materialistic.data.TestHnItem in project materialistic by hidroh.
the class ListFragmentTest method testHighlightNewItems.
@Test
public void testHighlightNewItems() {
Bundle args = new Bundle();
args.putString(ListFragment.EXTRA_ITEM_MANAGER, HackerNewsClient.class.getName());
args.putString(ListFragment.EXTRA_FILTER, ItemManager.TOP_FETCH_MODE);
activity.getSupportFragmentManager().beginTransaction().add(android.R.id.list, Fragment.instantiate(activity, ListFragment.class.getName(), args)).commit();
verify(itemManager).getStories(any(), eq(ItemManager.MODE_DEFAULT), listener.capture());
listener.getValue().onResponse(new Item[] { new TestItem() {
@Override
public String getId() {
return "1";
}
} });
reset(itemManager);
ShadowSwipeRefreshLayout shadowSwipeRefreshLayout = (ShadowSwipeRefreshLayout) ShadowExtractor.extract(activity.findViewById(R.id.swipe_layout));
shadowSwipeRefreshLayout.getOnRefreshListener().onRefresh();
// should trigger another data request
verify(itemManager).getStories(any(String.class), eq(ItemManager.MODE_NETWORK), listener.capture());
listener.getValue().onResponse(new Item[] { new TestHnItem(1L), new TestHnItem(2L) });
assertEquals(2, ((RecyclerView) activity.findViewById(R.id.recycler_view)).getAdapter().getItemCount());
View snackbarView = ShadowSnackbar.getLatestView();
Assertions.assertThat((TextView) snackbarView.findViewById(R.id.snackbar_text)).isNotNull().containsText(activity.getResources().getQuantityString(R.plurals.new_stories_count, 1, 1));
snackbarView.findViewById(R.id.snackbar_action).performClick();
assertEquals(1, ((RecyclerView) activity.findViewById(R.id.recycler_view)).getAdapter().getItemCount());
snackbarView = ShadowSnackbar.getLatestView();
Assertions.assertThat((TextView) snackbarView.findViewById(R.id.snackbar_text)).isNotNull().containsText(activity.getResources().getQuantityString(R.plurals.showing_new_stories, 1, 1));
snackbarView.findViewById(R.id.snackbar_action).performClick();
assertEquals(2, ((RecyclerView) activity.findViewById(R.id.recycler_view)).getAdapter().getItemCount());
controller.pause().stop().destroy();
}
use of io.github.hidroh.materialistic.data.TestHnItem in project materialistic by hidroh.
the class ListFragmentViewHolderTest method testNewStory.
@Test
public void testNewStory() {
reset(itemManager);
ShadowSwipeRefreshLayout shadowSwipeRefreshLayout = (ShadowSwipeRefreshLayout) ShadowExtractor.extract(activity.findViewById(R.id.swipe_layout));
shadowSwipeRefreshLayout.getOnRefreshListener().onRefresh();
verify(itemManager).getStories(any(), eq(ItemManager.MODE_NETWORK), storiesListener.capture());
storiesListener.getValue().onResponse(new Item[] { new TestHnItem(2) {
@Override
public int getRank() {
return 46;
}
} });
ShadowSnackbar.getLatestView().findViewById(R.id.snackbar_action).performClick();
verify(itemManager, atLeastOnce()).getItem(any(), eq(ItemManager.MODE_NETWORK), itemListener.capture());
itemListener.getValue().onResponse(new PopulatedStory(2));
RecyclerView.ViewHolder holder = adapter.getViewHolder(0);
assertThat((TextView) holder.itemView.findViewById(R.id.rank)).hasTextString("46*");
}
Aggregations