package com.azimo.tool.task; import com.azimo.tool.config.AppConfig; import com.azimo.tool.firebase.FirebaseServiceManager; import com.azimo.tool.firebase.collection.ReportedReviewsCollection; import com.azimo.tool.firebase.response.DefaultFirebaseResponse; import com.azimo.tool.publisher.collection.ReviewCollection; import com.azimo.tool.task.provider.UnreportedReviewsProvider; import com.azimo.tool.task.uploader.FirebaseReviewsUploader; import com.azimo.tool.task.uploader.SlackUploader; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * Created by F1sherKK on 26/01/17. */ public class ReportToSlackTaskTest { ReportToSlackTask reportToSlackTask; @Mock AppConfig appConfig; @Mock UnreportedReviewsProvider unreportedReviewsProvider; @Mock SlackUploader slackUploader; @Mock FirebaseReviewsUploader firebaseReviewsUploader; @Mock ReviewCollection unreportedReviews; @Mock ReportedReviewsCollection reportedReviews; @Mock FirebaseServiceManager firebaseServiceManager; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); reportToSlackTask = new ReportToSlackTask( unreportedReviewsProvider, slackUploader, firebaseServiceManager, firebaseReviewsUploader); } @Test public void testWhenPerformingRun_shouldFetchUnreportedReviewsAndSendThemToSlackAndFirebase() throws Exception { when(unreportedReviewsProvider.fetch()).thenReturn(unreportedReviews); when(slackUploader.upload(unreportedReviews)).thenReturn(reportedReviews); when(firebaseServiceManager.getReportedReviews()).thenReturn(reportedReviews); when(firebaseReviewsUploader.upload(reportedReviews)).thenReturn(new DefaultFirebaseResponse()); reportToSlackTask.run(); verify(unreportedReviewsProvider).fetch(); verify(slackUploader).upload(unreportedReviews); verify(firebaseServiceManager).getReportedReviews(); verify(firebaseReviewsUploader).upload(reportedReviews); } }