package com.ushahidi.platform.mobile.app.data.repository.datasource.deployment;
import com.ushahidi.platform.mobile.app.data.BaseTestCase;
import com.ushahidi.platform.mobile.app.data.database.DeploymentDatabaseHelper;
import com.ushahidi.platform.mobile.app.data.entity.DeploymentEntity;
import com.ushahidi.platform.mobile.app.data.entity.TestEntityFixtures;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import android.support.annotation.NonNull;
import java.util.List;
import rx.Observable;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verify;
/**
* @author Ushahidi Team <team@ushahidi.com>
*/
public class DeploymentDatabaseDataSourceTest extends BaseTestCase {
@Mock
private DeploymentDatabaseHelper mMockDeploymentDatabaseHelper;
private DeploymentDatabaseDataSource mDeploymentDatabaseDataSource;
private static final Long NUM_ROW = 1l;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mDeploymentDatabaseDataSource = new DeploymentDatabaseDataSource(
mMockDeploymentDatabaseHelper);
}
@Test
public void shouldCreateDeploymentDatabaseDataSourceObject() {
assertThat(mDeploymentDatabaseDataSource).isNotNull();
}
@Test
public void shouldGetDeploymentEntityList() {
List<DeploymentEntity> deploymentEntityList = TestEntityFixtures.getDeploymentEntityList();
assertThat(deploymentEntityList).isNotNull();
assertThat(deploymentEntityList).isNotEmpty();
given(mMockDeploymentDatabaseHelper.getDeployments())
.willReturn(Observable.just(deploymentEntityList));
mDeploymentDatabaseDataSource.getDeploymentEntityList();
verify(mMockDeploymentDatabaseHelper).getDeployments();
}
@Test
public void shouldGetDeploymentEntity() {
DeploymentEntity deploymentEntity = getDeploymentEntity();
given(mMockDeploymentDatabaseHelper
.getDeployment(TestEntityFixtures.DEPLOYMENT_ID)).willReturn(
Observable.just(deploymentEntity));
mDeploymentDatabaseDataSource.getDeploymentEntity(TestEntityFixtures.DEPLOYMENT_ID);
verify(mMockDeploymentDatabaseHelper).getDeployment(TestEntityFixtures.DEPLOYMENT_ID);
}
@Test
public void shouldGetDeploymentByItsStatus() {
DeploymentEntity deploymentEntity = getDeploymentEntity();
given(mMockDeploymentDatabaseHelper.getByStatus(DeploymentEntity.Status.ACTIVATED))
.willReturn(
Observable.just(deploymentEntity));
mDeploymentDatabaseDataSource.getByStatus(DeploymentEntity.Status.ACTIVATED);
verify(mMockDeploymentDatabaseHelper).getByStatus(DeploymentEntity.Status.ACTIVATED);
}
@Test
public void shouldAddDeploymentEntity() {
DeploymentEntity deploymentEntity = getDeploymentEntity();
given(mMockDeploymentDatabaseHelper.put(deploymentEntity))
.willReturn(Observable.just(NUM_ROW));
mDeploymentDatabaseDataSource.addDeploymentEntity(deploymentEntity);
verify(mMockDeploymentDatabaseHelper).put(deploymentEntity);
}
@Test
public void shouldUpdateDeploymentEntity() {
DeploymentEntity deploymentEntity = getDeploymentEntity();
given(mMockDeploymentDatabaseHelper.put(deploymentEntity))
.willReturn(Observable.just(NUM_ROW));
mDeploymentDatabaseDataSource.updateDeploymentEntity(deploymentEntity);
verify(mMockDeploymentDatabaseHelper).put(deploymentEntity);
}
@NonNull
private DeploymentEntity getDeploymentEntity() {
DeploymentEntity deploymentEntity = TestEntityFixtures.getDeploymentEntity();
assertThat(deploymentEntity).isNotNull();
return deploymentEntity;
}
@Test
public void shouldDeleteDeploymentEntity() {
given(mMockDeploymentDatabaseHelper.deleteDeployment(TestEntityFixtures.DEPLOYMENT_ID))
.willReturn(Observable.just(NUM_ROW));
mDeploymentDatabaseDataSource.deleteDeploymentEntity(TestEntityFixtures.DEPLOYMENT_ID);
verify(mMockDeploymentDatabaseHelper).deleteDeployment(TestEntityFixtures.DEPLOYMENT_ID);
}
}