11package hudson .plugins .jira ;
22
3- import static org .hamcrest .MatcherAssert .assertThat ;
4- import static org .hamcrest .Matchers .equalTo ;
5- import static org .hamcrest .Matchers .hasItem ;
6- import static org .hamcrest .Matchers .hasProperty ;
7- import static org .mockito .Mockito .spy ;
8- import static org .mockito .Mockito .times ;
9- import static org .mockito .Mockito .verify ;
10- import static org .mockito .Mockito .when ;
11-
12- import com .atlassian .jira .rest .client .api .domain .Issue ;
13- import com .atlassian .jira .rest .client .api .domain .Version ;
14- import hudson .plugins .jira .extension .ExtendedVersion ;
153import java .io .IOException ;
164import java .net .URI ;
175import java .net .URISyntaxException ;
208import java .util .List ;
219import java .util .concurrent .ThreadLocalRandom ;
2210import java .util .concurrent .TimeoutException ;
11+
12+ import static org .hamcrest .MatcherAssert .assertThat ;
13+ import static org .hamcrest .Matchers .equalTo ;
14+ import static org .hamcrest .Matchers .hasItem ;
15+ import static org .hamcrest .Matchers .hasProperty ;
2316import org .junit .jupiter .api .BeforeEach ;
2417import org .junit .jupiter .api .Test ;
2518import org .junit .jupiter .api .extension .ExtendWith ;
2619import org .mockito .ArgumentCaptor ;
2720import org .mockito .Mock ;
21+ import static org .mockito .Mockito .spy ;
22+ import static org .mockito .Mockito .times ;
23+ import static org .mockito .Mockito .verify ;
24+ import static org .mockito .Mockito .when ;
2825import org .mockito .junit .jupiter .MockitoExtension ;
2926
27+ import com .atlassian .jira .rest .client .api .domain .Issue ;
28+ import com .atlassian .jira .rest .client .api .domain .Version ;
29+
30+ import hudson .plugins .jira .extension .ExtendedVersion ;
31+
3032@ ExtendWith (MockitoExtension .class )
3133class JiraSessionTest {
3234
@@ -63,7 +65,7 @@ void replaceWithFixVersionByRegex() throws URISyntaxException, TimeoutException
6365
6466 ArgumentCaptor <String > issueKeys = ArgumentCaptor .forClass (String .class );
6567 ArgumentCaptor <List > versionList = ArgumentCaptor .forClass (List .class );
66- verify (service , times (2 )).updateIssue (issueKeys .capture (), versionList .capture ());
68+ verify (service , times (issues . size () )).updateIssue (issueKeys .capture (), versionList .capture ());
6769
6870 // First Issue, current FixVersion replaced by new one
6971 assertThat (issueKeys .getAllValues ().get (0 ), equalTo (issues .get (0 ).getKey ()));
@@ -95,13 +97,14 @@ void replaceFixVersion() throws URISyntaxException, TimeoutException {
9597 ArrayList <Issue > issues = new ArrayList <>();
9698 issues .add (getIssue (Arrays .asList ("v1.0" ), 1L ));
9799 issues .add (getIssue (Arrays .asList ("v1.0" , "v1.0.0" , "v2.0.0" ), 2L ));
100+ issues .add (getIssue (null , 3L ));
98101 when (service .getIssuesFromJqlSearch (QUERY , JiraSession .MAX_ISSUES )).thenReturn (issues );
99102
100103 jiraSession .replaceFixVersion (PROJECT_KEY , "v1.0" , newVersion .getName (), QUERY );
101104
102105 ArgumentCaptor <String > issueKeys = ArgumentCaptor .forClass (String .class );
103106 ArgumentCaptor <List > versionList = ArgumentCaptor .forClass (List .class );
104- verify (service , times (2 )).updateIssue (issueKeys .capture (), versionList .capture ());
107+ verify (service , times (issues . size () )).updateIssue (issueKeys .capture (), versionList .capture ());
105108
106109 // First Issue, current FixVersion replaced by new one
107110 assertThat (issueKeys .getAllValues ().get (0 ), equalTo (issues .get (0 ).getKey ()));
@@ -116,16 +119,23 @@ void replaceFixVersion() throws URISyntaxException, TimeoutException {
116119 assertThat (secondIssueUpdatedFixVersions , hasItem (hasProperty ("name" , equalTo (newVersion .getName ()))));
117120 assertThat (secondIssueUpdatedFixVersions , hasItem (hasProperty ("name" , equalTo ("v1.0.0" ))));
118121 assertThat (secondIssueUpdatedFixVersions , hasItem (hasProperty ("name" , equalTo ("v2.0.0" ))));
122+
123+ // Third Issue, no FixVersion, new fixVersion added.
124+ List <Version > thirdIssueVersions = versionList .getAllValues ().get (2 );
125+ assertThat (thirdIssueVersions .size (), equalTo (1 ));
126+ assertThat (thirdIssueVersions .get (0 ), equalTo (newVersion ));
127+
119128 }
120129
121130 private Issue getIssue (List <String > versions , long id ) throws URISyntaxException {
122- List <Version > fixVersions = new ArrayList <>() ;
131+ List <Version > fixVersions = null ;
123132 if (versions != null ) {
133+ fixVersions = new ArrayList <>();
124134 for (String fixVersion : versions ) {
125135 fixVersions .add (new Version (
126136 new URI ("self" ), ThreadLocalRandom .current ().nextLong (), fixVersion , null , false , false , null ));
127137 }
128- }
138+ }
129139
130140 return new Issue (
131141 "" ,
0 commit comments