package hudson.plugins.jira;
import hudson.model.Action;
import hudson.model.Job;
import hudson.plugins.jira.JiraJobAction;
import hudson.plugins.jira.JiraSite;
import hudson.plugins.jira.model.JiraIssue;
import jenkins.branch.MultiBranchProject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyObject;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class JiraJobActionTest {
@Mock
JiraSite site;
@Mock
Job job;
@Mock
MultiBranchProject mbp;
final JiraIssue issue = new JiraIssue("EXAMPLE-123", "I like cake");
@Test
public void testDetectBranchNameIssue() throws Exception {
when(job.getName()).thenReturn("feature/EXAMPLE-123");
ArgumentCaptor<JiraJobAction> captor = ArgumentCaptor.forClass(JiraJobAction.class);
JiraJobAction.setAction(job, site);
verify(job).addAction(captor.capture());
JiraJobAction action = captor.getValue();
assertNotNull(action.getIssue());
assertEquals("EXAMPLE-123", action.getIssue().getKey());
assertEquals("I like cake", action.getIssue().getSummary());
}
@Test
public void testDetectBranchNameIssueJustIssueKey() throws Exception {
when(job.getName()).thenReturn("EXAMPLE-123");
ArgumentCaptor<JiraJobAction> captor = ArgumentCaptor.forClass(JiraJobAction.class);
JiraJobAction.setAction(job, site);
verify(job).addAction(captor.capture());
JiraJobAction action = captor.getValue();
assertNotNull(action.getIssue());
assertEquals("EXAMPLE-123", action.getIssue().getKey());
assertEquals("I like cake", action.getIssue().getSummary());
}
@Test
public void testDetectBranchNameIssueNoIssueKey() throws Exception {
when(job.getName()).thenReturn("NOTHING INTERESTING");
JiraJobAction.setAction(job, site);
verify(job, never()).addAction((Action) anyObject());
}
@Before
public void setup() throws Exception {
when(job.getParent()).thenReturn(mbp);
when(site.getIssuePattern()).thenReturn(JiraSite.DEFAULT_ISSUE_PATTERN);
when(site.getIssue("EXAMPLE-123")).thenReturn(issue);
}
}