|
2 | 2 |
|
3 | 3 | import static org.mockito.Mockito.anyString;
|
4 | 4 | import static org.mockito.Mockito.eq;
|
| 5 | +import static org.mockito.Mockito.mock; |
5 | 6 | import static org.mockito.Mockito.never;
|
| 7 | +import static org.mockito.Mockito.spy; |
| 8 | +import static org.mockito.Mockito.startsWith; |
6 | 9 | import static org.mockito.Mockito.times;
|
7 | 10 | import static org.mockito.Mockito.verify;
|
8 | 11 | import static org.mockito.Mockito.when;
|
9 | 12 |
|
10 | 13 | import hudson.model.FreeStyleBuild;
|
| 14 | +import hudson.model.FreeStyleProject; |
| 15 | +import hudson.model.Result; |
11 | 16 | import hudson.model.TaskListener;
|
| 17 | +import hudson.triggers.Trigger; |
| 18 | +import hudson.triggers.TriggerDescriptor; |
| 19 | +import java.util.HashMap; |
| 20 | +import java.util.Map; |
12 | 21 | import org.junit.Before;
|
13 | 22 | import org.junit.Rule;
|
14 | 23 | import org.junit.Test;
|
@@ -73,6 +82,42 @@ public void onStarted_doesnt_set_if_there_is_no_StashCause() throws Exception {
|
73 | 82 | verify(build, never()).setDescription(anyString());
|
74 | 83 | }
|
75 | 84 |
|
| 85 | + @Test |
| 86 | + public void onCompleted_posts_finished_comment() throws Exception { |
| 87 | + final String duration = "2 seconds"; |
| 88 | + final int buildNumber = 123; |
| 89 | + |
| 90 | + StashBuildTrigger trigger = mock(StashBuildTrigger.class); |
| 91 | + StashPullRequestsBuilder builder = mock(StashPullRequestsBuilder.class); |
| 92 | + StashRepository repository = mock(StashRepository.class); |
| 93 | + FreeStyleProject project = spy(jenkinsRule.createFreeStyleProject()); |
| 94 | + |
| 95 | + Map<TriggerDescriptor, Trigger<?>> triggerMap = new HashMap<TriggerDescriptor, Trigger<?>>(); |
| 96 | + triggerMap.put(StashBuildTrigger.descriptor, trigger); |
| 97 | + |
| 98 | + when(build.getCause(eq(StashCause.class))).thenReturn(stashCause); |
| 99 | + when(build.getParent()).thenReturn(project); |
| 100 | + when(project.getTriggers()).thenReturn(triggerMap); |
| 101 | + when(trigger.getBuilder()).thenReturn(builder); |
| 102 | + when(builder.getRepository()).thenReturn(repository); |
| 103 | + when(build.getResult()).thenReturn(Result.SUCCESS); |
| 104 | + when(build.getDurationString()).thenReturn(duration); |
| 105 | + when(build.getNumber()).thenReturn(buildNumber); |
| 106 | + |
| 107 | + stashBuildListener.onCompleted(build, taskListener); |
| 108 | + |
| 109 | + verify(repository, times(1)) |
| 110 | + .postFinishedComment( |
| 111 | + eq(stashCause.getPullRequestId()), |
| 112 | + eq(stashCause.getSourceCommitHash()), |
| 113 | + eq(stashCause.getDestinationCommitHash()), |
| 114 | + eq(Result.SUCCESS), |
| 115 | + startsWith("http://localhost"), |
| 116 | + eq(buildNumber), |
| 117 | + eq(""), |
| 118 | + eq(duration)); |
| 119 | + } |
| 120 | + |
76 | 121 | @Test
|
77 | 122 | public void onCompleted_doesnt_check_build_result_if_there_is_no_StashCause() throws Exception {
|
78 | 123 | when(build.getCause(eq(StashCause.class))).thenReturn(null);
|
|
0 commit comments