package com.azimo.tool.firebase;
import com.azimo.tool.firebase.collection.CreatedIssueCollection;
import com.azimo.tool.firebase.collection.ReportedReviewsCollection;
import com.azimo.tool.firebase.mapper.CreatedIssueMapper;
import com.azimo.tool.firebase.mapper.ReportedReviewMapper;
import com.azimo.tool.firebase.model.CreatedIssue;
import com.azimo.tool.firebase.model.CreatedIssuesList;
import com.azimo.tool.firebase.model.ReportedReview;
import com.azimo.tool.firebase.model.ReportedReviewsList;
import com.azimo.tool.firebase.response.DefaultFirebaseResponse;
import com.azimo.tool.firebase.response.GetCreatedIssuesResponse;
import com.azimo.tool.firebase.response.GetReportedReviewsResponse;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import rx.Observable;
import java.io.IOException;
import java.util.Arrays;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.mockito.Mockito.when;
/**
* Created by F1sherKK on 26/01/17.
*/
public class FirebaseServiceManagerTest {
FirebaseServiceManager firebaseIssueServiceManager;
@Mock
FirebaseService firebaseService;
@Mock
CreatedIssueMapper createdIssueMapper;
@Mock
ReportedReviewMapper reportedReviewMapper;
@Mock
ReportedReview reportedReview1;
@Mock
ReportedReview reportedReview2;
@Mock
ReportedReview reportedReview3;
@Mock
CreatedIssue createdIssue1;
@Mock
CreatedIssue createdIssue2;
@Mock
CreatedIssue createdIssue3;
@Mock
GetReportedReviewsResponse reviewResponse;
@Mock
GetCreatedIssuesResponse issuesResponse;
@Mock
DefaultFirebaseResponse defaultFirebaseResponse;
@Mock
ReportedReviewsCollection reportedReviewsCollection;
@Mock
CreatedIssueCollection createdIssueCollection;
@Mock
CreatedIssuesList createdIssuesList;
@Mock
ReportedReviewsList reportedReviewsList;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
firebaseIssueServiceManager =
new FirebaseServiceManager(firebaseService, createdIssueMapper, reportedReviewMapper);
}
@Test
public void testWhenUpdatingReportedReviewsToFireBase_ShouldReturnResponse() throws IOException {
when(reportedReviewMapper.reportedReviewsCollectionToList(reportedReviewsCollection))
.thenReturn(reportedReviewsList);
when(firebaseService.updateReportedReviews(reportedReviewsList))
.thenReturn(Observable.just(defaultFirebaseResponse));
DefaultFirebaseResponse response = firebaseIssueServiceManager.updateReportedReviews(reportedReviewsCollection);
assertThat(response.equals(defaultFirebaseResponse), is(true));
}
@Test
public void testWhenGettingReportedReviewsFromFireBase_ShouldReturnCollection() throws IOException {
when(reportedReviewsCollection.get(0)).thenReturn(reportedReview1);
when(reportedReviewsCollection.get(1)).thenReturn(reportedReview2);
when(reportedReviewsCollection.get(2)).thenReturn(reportedReview3);
when(reportedReviewMapper.getReportedReviewsResponseToCollection(reviewResponse))
.thenReturn(reportedReviewsCollection);
when(firebaseService.getReportedReviews()).thenReturn(Observable.just(reviewResponse));
ReportedReviewsCollection responseCollection = firebaseIssueServiceManager.getReportedReviews();
assertThat(reportedReviewsCollection.equals(responseCollection), is(true));
assertThat(reportedReviewsCollection.get(0).equals(responseCollection.get(0)), is(true));
assertThat(reportedReviewsCollection.get(0).equals(responseCollection.get(0)), is(true));
assertThat(reportedReviewsCollection.get(0).equals(responseCollection.get(0)), is(true));
}
@Test
public void testWhenUpdatingCreatedIssuesToFireBase_ShouldReturnResponse() throws IOException {
when(createdIssueMapper.createdIssuesCollectionToList(createdIssueCollection))
.thenReturn(createdIssuesList);
when(firebaseService.updateCreatedIssues(createdIssuesList))
.thenReturn(Observable.just(defaultFirebaseResponse));
DefaultFirebaseResponse response = firebaseIssueServiceManager.updateCreatedIssues(createdIssueCollection);
assertThat(response.equals(defaultFirebaseResponse), is(true));
}
@Test
public void testWhenGettingCreatedIssuesFromFireBase_ShouldReturnCollection() throws IOException {
when(createdIssueCollection.get(0)).thenReturn(createdIssue1);
when(createdIssueCollection.get(1)).thenReturn(createdIssue2);
when(createdIssueCollection.get(2)).thenReturn(createdIssue3);
when(createdIssueMapper.getCreatedIssuesResponseToCollection(issuesResponse))
.thenReturn(createdIssueCollection);
when(firebaseService.getCreatedIssues()).thenReturn(Observable.just(issuesResponse));
CreatedIssueCollection responseCollection = firebaseIssueServiceManager.getCreatedIssues();
assertThat(createdIssueCollection.equals(responseCollection), is(true));
assertThat(createdIssueCollection.get(0).equals(responseCollection.get(0)), is(true));
assertThat(createdIssueCollection.get(0).equals(responseCollection.get(0)), is(true));
assertThat(createdIssueCollection.get(0).equals(responseCollection.get(0)), is(true));
}
}