package com.badoo.chateau.core.usecases.conversations; import com.badoo.barf.data.repo.Repository; import com.badoo.chateau.core.model.Conversation; import com.badoo.chateau.core.repos.conversations.ConversationDataSource; import com.badoo.chateau.core.repos.conversations.ConversationQueries; import com.badoo.chateau.core.repos.conversations.ConversationQueries.LoadConversationsQuery; import com.badoo.chateau.core.repos.conversations.ConversationQueries.LoadConversationsQuery.Type; import com.badoo.chateau.example.data.model.ExampleConversation; import com.badoo.unittest.rx.BaseRxTestCase; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.Collections; import rx.Observable; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class LoadConversationsTest extends BaseRxTestCase { @Mock private Repository<TestConversation> mMockRepository; private LoadConversations<TestConversation> mTarget; @Before public void beforeTest() { super.beforeTest(); mTarget = new LoadConversations<>(mMockRepository); } @Test public void whenMessagesForChatRequested_thenRepoIsQueriedForCorrectChatId() throws Exception { // Setup when(mMockRepository.query(eq(new LoadConversationsQuery<>(Type.ALL)))) .thenReturn(Observable.just(new ConversationDataSource.LoadResult<>(Collections.emptyList(), false, false))); // Execute mTarget.execute(Type.ALL); // Assert verify(mMockRepository, times(1)).query(eq(new LoadConversationsQuery<>(Type.ALL))); } private static class TestConversation implements Conversation { } }