package com.azimo.tool.task.uploader; import com.azimo.tool.firebase.collection.ReportedReviewsCollection; import com.azimo.tool.firebase.model.ReportedReview; import com.azimo.tool.publisher.collection.ReviewCollection; import com.azimo.tool.publisher.model.AppReview; import com.azimo.tool.slack.SlackServiceManager; import com.azimo.tool.slack.model.SlackMessage; import com.azimo.tool.slack.response.SlackPostMessageResponse; import com.azimo.tool.utils.converter.MessageConverter; import com.azimo.tool.utils.converter.ReviewConverter; import com.google.api.services.androidpublisher.model.Timestamp; import com.google.api.services.androidpublisher.model.UserComment; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.when; /** * Created by F1sherKK on 27/01/17. */ public class SlackUploaderTest { SlackUploader slackUploader; @Mock MessageConverter messageConverter; @Mock ReviewConverter reviewConverter; @Mock SlackServiceManager slackServiceManager; @Mock AppReview appReview1; @Mock AppReview appReview2; @Mock SlackMessage slackMessage1; @Mock SlackMessage slackMessage2; @Mock SlackPostMessageResponse slackPostMessageResponse1; @Mock SlackPostMessageResponse slackPostMessageResponse2; @Mock ReportedReview reportedReview1; @Mock ReportedReview reportedReview2; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); slackUploader = new SlackUploader(messageConverter, reviewConverter, slackServiceManager); } @Test public void whenUploadingReviews_shouldReturnReportedReviewList() { final long minuteInSeconds = 60; final long hourInSeconds = 60 * minuteInSeconds; final long dayInSeconds = 24 * hourInSeconds; long nowInSeconds = System.currentTimeMillis() / 1000; UserComment userComment_sevenDaysOld = new UserComment(); UserComment userComment_oneDayOld = new UserComment(); Timestamp timestamp_sevenDaysOld = new Timestamp(); Timestamp timestamp_oneDayOld = new Timestamp(); timestamp_sevenDaysOld.setSeconds(nowInSeconds - 7 * dayInSeconds); timestamp_sevenDaysOld.setNanos(0); timestamp_oneDayOld.setSeconds(nowInSeconds - dayInSeconds); timestamp_oneDayOld.setNanos(0); userComment_sevenDaysOld.setLastModified(timestamp_sevenDaysOld); userComment_oneDayOld.setLastModified(timestamp_oneDayOld); String reviewId1 = "id1"; String reviewId2 = "id2"; when(appReview1.getReviewId()).thenReturn(reviewId1); when(appReview2.getReviewId()).thenReturn(reviewId2); when(appReview1.getFirstUserComment()).thenReturn(userComment_oneDayOld); when(appReview2.getFirstUserComment()).thenReturn(userComment_sevenDaysOld); ReviewCollection reviewCollection = new ReviewCollection(); reviewCollection.add(appReview1); reviewCollection.add(appReview2); when(messageConverter.slackMessageFromAppReview(appReview1)).thenReturn(slackMessage1); when(messageConverter.slackMessageFromAppReview(appReview2)).thenReturn(slackMessage2); when(slackServiceManager.sendMessage(slackMessage1)).thenReturn(slackPostMessageResponse1); when(slackServiceManager.sendMessage(slackMessage2)).thenReturn(slackPostMessageResponse2); when(slackPostMessageResponse1.wasSuccess()).thenReturn(true); when(slackPostMessageResponse2.wasSuccess()).thenReturn(true); when(reportedReview1.getReportedReviewId()).thenReturn(reviewId1); when(reportedReview2.getReportedReviewId()).thenReturn(reviewId2); when(reviewConverter.reportedReviewFromAppReview(appReview1)).thenReturn(reportedReview1); when(reviewConverter.reportedReviewFromAppReview(appReview2)).thenReturn(reportedReview2); ReportedReviewsCollection reportedReviewsCollection = slackUploader.upload(reviewCollection); assertThat(reportedReviewsCollection.size() == 2, is(true)); assertThat(reportedReviewsCollection.get(0).getReportedReviewId().equals(reviewId2), is(true)); assertThat(reportedReviewsCollection.get(1).getReportedReviewId().equals(reviewId1), is(true)); } }