package com.ushahidi.platform.mobile.app.data.repository; import com.ushahidi.platform.mobile.app.data.BaseTestCase; import com.ushahidi.platform.mobile.app.data.entity.FormEntity; import com.ushahidi.platform.mobile.app.data.entity.TestEntityFixtures; import com.ushahidi.platform.mobile.app.data.entity.mapper.FormEntityDataMapper; import com.ushahidi.platform.mobile.app.data.repository.datasource.form.FormDataSource; import com.ushahidi.platform.mobile.app.data.repository.datasource.form.FormDataSourceFactory; import com.ushahidi.platform.mobile.app.domain.entity.Form; import com.ushahidi.platform.mobile.app.domain.entity.From; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.List; import rx.Observable; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.verify; /** * @author Ushahidi Team <team@ushahidi.com> */ public class FormDataRepositoryTest extends BaseTestCase { @Rule public ExpectedException expectedException = ExpectedException.none(); private FormDataRepository mFormDataRepository; @Mock private FormDataSourceFactory mMockFormDataSourceFactory; @Mock private FormEntityDataMapper mMockFormEntityMapper; @Mock private FormDataSource mMockDataSource; @Mock private Form mMockForm; @Mock private FormEntity mMockFormEntity; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); clearSingleton(FormDataRepository.class); mFormDataRepository = new FormDataRepository(mMockFormDataSourceFactory, mMockFormEntityMapper); given(mMockFormDataSourceFactory.createDatabaseDataSource()) .willReturn(mMockDataSource); } @Test public void getFormFromDatabase() { List<FormEntity> formEntityList = new ArrayList<>(); formEntityList.add(new FormEntity()); given(mMockDataSource.getForms(TestEntityFixtures.DEPLOYMENT_ID)) .willReturn(Observable.just(formEntityList)); mFormDataRepository.getForms(TestEntityFixtures.DEPLOYMENT_ID, From.DATABASE); verify(mMockFormDataSourceFactory).createDatabaseDataSource(); verify(mMockDataSource).getForms(TestEntityFixtures.DEPLOYMENT_ID); } @Test public void shouldSuccessfullyAddAForm() { given(mMockDataSource.putForm(mMockFormEntity)).willReturn( Observable.just(1l)); given(mMockFormEntityMapper.map(mMockForm)).willReturn(mMockFormEntity); mFormDataRepository.putForm(mMockForm); verify(mMockFormDataSourceFactory).createDatabaseDataSource(); verify(mMockDataSource).putForm(mMockFormEntity); } }