use of com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent in project dev-summit-architecture-demo by yigit.
the class FeedActivityTest method refreshFeedWithOlderItems.
@Test
public void refreshFeedWithOlderItems() 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(10L);
post2.setCreated(2L);
//noinspection unchecked
when(mockFeedModel.loadFeed(0L, null)).thenReturn(items);
when(mockFeedModel.loadFeed(1L, 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(post1.getText())))).check(matches(withChild(withText(feedItem1.getUser().getName()))));
onItemAt(1).check(matches(withChild(withText(post2.getText())))).check(matches(withChild(withText(feedItem2.getUser().getName()))));
}
use of com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent in project dev-summit-architecture-demo by yigit.
the class FetchFeedJobTest method testCancelWithUser.
@Test
public void testCancelWithUser() throws Throwable {
FetchFeedJob job = new FetchFeedJob(BaseJob.BACKGROUND, 101L);
job.inject(getTestComponent());
job.onCancel();
FetchedFeedEvent event = mLoggingBus.findEvent(FetchedFeedEvent.class);
assertThat(event, notNullValue());
assertThat(event.isSuccess(), is(false));
assertThat(event.getUserId(), is(101L));
}
use of com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent in project dev-summit-architecture-demo by yigit.
the class FetchFeedJob method onRun.
@Override
public void onRun() throws Throwable {
long timestamp = mFeedModel.getLatestTimestamp(mUserId);
final Call<FeedResponse> feed;
if (mUserId == null) {
feed = mApiService.feed(timestamp);
} else {
feed = mApiService.userFeed(mUserId, timestamp);
}
Response<FeedResponse> response = feed.execute();
if (response.isSuccess()) {
Post oldest = handleResponse(response.body());
mEventBus.post(new FetchedFeedEvent(true, mUserId, oldest));
} else {
throw new NetworkException(response.code());
}
}
use of com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent in project dev-summit-architecture-demo by yigit.
the class FetchFeedJobTest method testCancel.
@Test
public void testCancel() throws Throwable {
FetchFeedJob job = new FetchFeedJob(BaseJob.BACKGROUND, null);
job.inject(getTestComponent());
job.onCancel();
FetchedFeedEvent event = mLoggingBus.findEvent(FetchedFeedEvent.class);
assertThat(event, notNullValue());
assertThat(event.isSuccess(), is(false));
assertThat(event.getUserId(), nullValue());
}
use of com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent in project dev-summit-architecture-demo by yigit.
the class FetchFeedJobTest method testRun.
@Test
public void testRun() throws Throwable {
FeedResponse response = new FeedResponse();
List<User> users = Arrays.asList(createDummyUser(), createDummyUser());
List<Post> posts = Arrays.asList(createDummyPost(users.get(0).getId()), createDummyPost(users.get(0).getId()), createDummyPost(users.get(1).getId()));
posts.get(0).setCreated(10);
posts.get(1).setCreated(11);
posts.get(2).setCreated(12);
response.setPosts(posts);
response.setUsers(users);
FetchFeedJob job = new FetchFeedJob(BaseJob.BACKGROUND, 101L);
when(mApiService.userFeed(101L, 0L)).thenReturn(createCall(response));
job.inject(getTestComponent());
job.onRun();
FetchedFeedEvent event = mLoggingBus.findEvent(FetchedFeedEvent.class);
assertThat(event, notNullValue());
assertThat(event.isSuccess(), is(true));
assertThat(event.getUserId(), is(101L));
// TODO Better to mock the models and verify the save calls so that this test wont
// be effected by model failures.
assertThat(mUserModel.load(users.get(0).getId()), notNullValue());
assertThat(mUserModel.load(users.get(1).getId()), notNullValue());
assertThat(mPostModel.load(posts.get(0).getId()), notNullValue());
assertThat(mPostModel.load(posts.get(1).getId()), notNullValue());
assertThat(mPostModel.load(posts.get(2).getId()), notNullValue());
assertThat(mFeedModel.getLatestTimestamp(101L), is(12L));
}
Aggregations