package com.azimo.tool.task;
import com.azimo.tool.config.AppConfig;
import com.azimo.tool.firebase.FirebaseServiceManager;
import com.azimo.tool.firebase.collection.CreatedIssueCollection;
import com.azimo.tool.firebase.response.DefaultFirebaseResponse;
import com.azimo.tool.publisher.collection.ReviewCollection;
import com.azimo.tool.task.provider.UncreatedIssuesProvider;
import com.azimo.tool.task.uploader.FirebaseIssuesUploader;
import com.azimo.tool.task.uploader.JiraUploader;
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 CreateJiraIssuesTaskTest {
CreateJiraIssuesTask createJiraIssuesTask;
@Mock
AppConfig appConfig;
@Mock
UncreatedIssuesProvider uncreatedIssuesProvider;
@Mock
JiraUploader jiraUploader;
@Mock
FirebaseIssuesUploader firebaseIssuesUploader;
@Mock
ReviewCollection unreportedToJiraReviews;
@Mock
CreatedIssueCollection createdIssues;
@Mock
FirebaseServiceManager firebaseServiceManager;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
createJiraIssuesTask = new CreateJiraIssuesTask(
uncreatedIssuesProvider, jiraUploader, firebaseServiceManager, firebaseIssuesUploader);
}
@Test
public void testWhenPerformingRun_shouldFetchUncreatedIssuesAndSendThemToJiraAndFirebase() throws Exception {
when(uncreatedIssuesProvider.fetch()).thenReturn(unreportedToJiraReviews);
when(unreportedToJiraReviews.getWithMinThreeStars()).thenReturn(unreportedToJiraReviews);
when(firebaseServiceManager.getCreatedIssues()).thenReturn(createdIssues);
when(jiraUploader.upload(unreportedToJiraReviews)).thenReturn(createdIssues);
when(firebaseIssuesUploader.upload(createdIssues)).thenReturn(new DefaultFirebaseResponse());
createJiraIssuesTask.run();
verify(uncreatedIssuesProvider).fetch();
verify(jiraUploader).upload(unreportedToJiraReviews);
verify(firebaseServiceManager).getCreatedIssues();
verify(firebaseIssuesUploader).upload(createdIssues);
}
}