Search in sources :

Example 6 with User

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;
}
Also used : User(com.android.example.devsummit.archdemo.vo.User) FeedItem(com.android.example.devsummit.archdemo.vo.FeedItem) Post(com.android.example.devsummit.archdemo.vo.Post) ArrayList(java.util.ArrayList)

Example 7 with User

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;
}
Also used : User(com.android.example.devsummit.archdemo.vo.User) HashMap(java.util.HashMap) Select(com.raizlabs.android.dbflow.sql.language.Select)

Example 8 with User

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));
}
Also used : TestUtil.createDummyUser(com.android.example.devsummit.archdemo.util.TestUtil.createDummyUser) User(com.android.example.devsummit.archdemo.vo.User) Post(com.android.example.devsummit.archdemo.vo.Post) TestUtil.createDummyPost(com.android.example.devsummit.archdemo.util.TestUtil.createDummyPost) FeedResponse(com.android.example.devsummit.archdemo.api.FeedResponse) FetchedFeedEvent(com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent) BaseTest(com.android.example.devsummit.archdemo.BaseTest) Test(org.junit.Test)

Example 9 with User

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()));
}
Also used : NewPostResponse(com.android.example.devsummit.archdemo.api.NewPostResponse) User(com.android.example.devsummit.archdemo.vo.User) FeedItem(com.android.example.devsummit.archdemo.vo.FeedItem) Post(com.android.example.devsummit.archdemo.vo.Post) Test(org.junit.Test) BaseTest(com.android.example.devsummit.archdemo.BaseTest)

Example 10 with User

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));
}
Also used : User(com.android.example.devsummit.archdemo.vo.User) Post(com.android.example.devsummit.archdemo.vo.Post) Test(org.junit.Test) BaseTest(com.android.example.devsummit.archdemo.BaseTest)

Aggregations

User (com.android.example.devsummit.archdemo.vo.User)12 BaseTest (com.android.example.devsummit.archdemo.BaseTest)7 Test (org.junit.Test)7 Post (com.android.example.devsummit.archdemo.vo.Post)5 FeedItem (com.android.example.devsummit.archdemo.vo.FeedItem)3 FeedResponse (com.android.example.devsummit.archdemo.api.FeedResponse)1 NewPostResponse (com.android.example.devsummit.archdemo.api.NewPostResponse)1 FetchedFeedEvent (com.android.example.devsummit.archdemo.event.feed.FetchedFeedEvent)1 TestUtil.createDummyPost (com.android.example.devsummit.archdemo.util.TestUtil.createDummyPost)1 TestUtil.createDummyUser (com.android.example.devsummit.archdemo.util.TestUtil.createDummyUser)1 FeedAdapter (com.android.example.devsummit.archdemo.view.FeedAdapter)1 Select (com.raizlabs.android.dbflow.sql.language.Select)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1