use of com.android.example.devsummit.archdemo.vo.FeedItem in project dev-summit-architecture-demo by yigit.
the class FeedAdapter method insert.
public void insert(FeedItem item) {
String key = createKeyFor(item.getPost());
FeedItem existing = mUniqueMapping.put(key, item);
if (existing == null) {
mList.add(item);
} else {
int pos = mList.indexOf(existing);
mList.updateItemAt(pos, item);
}
}
use of com.android.example.devsummit.archdemo.vo.FeedItem in project dev-summit-architecture-demo by yigit.
the class FeedAdapter method onCreateViewHolder.
@Override
public FeedItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final FeedItemBinding binding = DataBindingUtil.inflate(mLayoutInflater, R.layout.feed_item, parent, false);
FeedItemViewHolder holder = new FeedItemViewHolder(binding);
holder.binding.userName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mCallback == null) {
return;
}
FeedItem model = binding.getModel();
mCallback.onUserClick(model.getUser());
}
});
// we don't need grid layout error messages
holder.binding.grid.setPrinter(null);
return holder;
}
use of com.android.example.devsummit.archdemo.vo.FeedItem in project dev-summit-architecture-demo by yigit.
the class FeedModelTest method loadFeed.
@Test
public void loadFeed() {
NewPostResponse response = new NewPostResponse();
Post post = TestUtil.createDummyPost();
User user = TestUtil.createDummyUser();
post.setUserId(user.getId());
response.setUser(user);
response.setPost(post);
mPostModel.save(post);
mUserModel.save(user);
assertThat(mUserModel.load(user.getId()), notNullValue());
assertThat(mPostModel.load(post.getId()), notNullValue());
List<FeedItem> feed = mFeedModel.loadFeed(0, user.getId());
assertThat(feed, notNullValue());
assertThat(feed.size(), is(1));
FeedItem loaded = feed.get(0);
assertThat(loaded.getUser().getId(), is(user.getId()));
assertThat(loaded.getPost().getId(), is(post.getId()));
}
use of com.android.example.devsummit.archdemo.vo.FeedItem in project dev-summit-architecture-demo by yigit.
the class FeedActivityTest method refreshFeedWithNewItems.
@Test
public void refreshFeedWithNewItems() throws Throwable {
FeedModel mockFeedModel = mock(FeedModel.class);
when(mComponent.feedModel()).thenReturn(mockFeedModel);
FeedItem feedItem1 = TestUtil.createDummyFeedItem();
FeedItem feedItem2 = TestUtil.createDummyFeedItem();
List<FeedItem> items = Collections.singletonList(feedItem1);
List<FeedItem> items2 = Arrays.asList(feedItem1, feedItem2);
Post post1 = feedItem1.getPost();
final Post post2 = feedItem2.getPost();
post1.setCreated(1L);
post2.setCreated(2L);
//noinspection unchecked
when(mockFeedModel.loadFeed(0L, null)).thenReturn(items);
when(mockFeedModel.loadFeed(post1.getCreated(), null)).thenReturn(items2);
getActivity();
onView(atAdapterPosition(getActivity().mBinding.list, 0)).check(matches(withChild(withText(post1.getText())))).check(matches(withChild(withText(feedItem1.getUser().getName()))));
runTestOnUiThread(new Runnable() {
@Override
public void run() {
getActivity().onEventMainThread(new FetchedFeedEvent(true, null, post2));
}
});
onItemAt(0).check(matches(withChild(withText(post2.getText())))).check(matches(withChild(withText(feedItem2.getUser().getName()))));
onItemAt(1).check(matches(withChild(withText(post1.getText())))).check(matches(withChild(withText(feedItem1.getUser().getName()))));
}
use of com.android.example.devsummit.archdemo.vo.FeedItem in project dev-summit-architecture-demo by yigit.
the class FeedActivityTest method loadFeed.
@Test
public void loadFeed() {
FeedModel mockFeedModel = mock(FeedModel.class);
when(mComponent.feedModel()).thenReturn(mockFeedModel);
List<FeedItem> items = Collections.singletonList(TestUtil.createDummyFeedItem());
when(mockFeedModel.loadFeed(0L, null)).thenReturn(items);
getActivity();
onView(withId(R.id.user_name)).check(matches(withText(items.get(0).getUser().getName())));
onView(withId(R.id.post_text)).check(matches(withText(items.get(0).getPost().getText())));
}
Aggregations