use of com.android.example.devsummit.archdemo.vo.User in project dev-summit-architecture-demo by yigit.
the class FeedModel method loadFeed.
public List<FeedItem> loadFeed(long since, @Nullable Long userId) {
final List<Post> posts;
if (userId == null) {
posts = mComponent.postModel().loadPostsSince(since);
} else {
posts = mComponent.postModel().loadPostsOfUser(userId, since);
}
List<Long> userIds = new ArrayList<>();
for (Post post : posts) {
userIds.add(post.getUserId());
}
Map<Long, User> users = mComponent.userModel().loadUsersAsMap(userIds);
List<FeedItem> result = new ArrayList<>();
for (Post post : posts) {
User user = users.get(post.getUserId());
if (user != null) {
result.add(new FeedItem(post, user));
}
}
return result;
}
use of com.android.example.devsummit.archdemo.vo.User in project dev-summit-architecture-demo by yigit.
the class UserModel method loadUsersAsMap.
public Map<Long, User> loadUsersAsMap(List<Long> userIds) {
final HashMap<Long, User> result = new HashMap<>();
if (userIds.isEmpty()) {
return result;
}
long first = userIds.get(0);
List<Long> rest = userIds.subList(1, userIds.size());
FlowCursorList<User> userFlowCursorList = new Select().from(User.class).where(Condition.column(User$Table.MID).in(first, rest.toArray())).queryCursorList();
try {
final int size = userFlowCursorList.getCount();
for (int i = 0; i < size; i++) {
User user = userFlowCursorList.getItem(i);
result.put(user.getId(), user);
}
} finally {
userFlowCursorList.close();
}
return result;
}
use of com.android.example.devsummit.archdemo.vo.User 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));
}
use of com.android.example.devsummit.archdemo.vo.User 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.User in project dev-summit-architecture-demo by yigit.
the class FeedModelTest method loadFeedOfUser.
@Test
public void loadFeedOfUser() {
long now = System.currentTimeMillis();
Post p1 = TestUtil.createDummyPost();
User u1 = TestUtil.createDummyUser();
p1.setUserId(u1.getId());
p1.setCreated(now);
Post p2 = TestUtil.createDummyPost();
User u2 = TestUtil.createDummyUser();
p2.setUserId(u2.getId());
p2.setCreated(now + 2);
Post p3 = TestUtil.createDummyPost();
p3.setUserId(u1.getId());
p3.setCreated(now - 2);
mPostModel.save(p1);
mPostModel.save(p2);
mPostModel.save(p3);
mUserModel.save(u1);
mUserModel.save(u2);
assertThat(mFeedModel.loadFeed(0, null).size(), is(3));
assertThat(mFeedModel.loadFeed(0, u1.getId()).size(), is(2));
assertThat(mFeedModel.loadFeed(0, u2.getId()).size(), is(1));
assertThat(mFeedModel.loadFeed(now, null).size(), is(1));
assertThat(mFeedModel.loadFeed(now - 1, null).size(), is(2));
assertThat(mFeedModel.loadFeed(now - 4, null).size(), is(3));
assertThat(mFeedModel.loadFeed(now, u1.getId()).size(), is(0));
assertThat(mFeedModel.loadFeed(now - 1, u1.getId()).size(), is(1));
assertThat(mFeedModel.loadFeed(now - 4, u1.getId()).size(), is(2));
}
Aggregations