From c99d6fcdea02ea43ef07155820a41c4c65eaf2dc Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 23 Nov 2020 09:52:06 +0100 Subject: [PATCH] #159 - Polishing. Encapsulate dependency versions in DependencyVersions value object. Use ModuleIteration instead of TrainIteration+Project. --- .../dependency/DependencyCommands.java | 29 ++++-- .../dependency/DependencyOperations.java | 69 +++++++------- .../DependencyUpgradeProposals.java | 4 +- .../release/dependency/DependencyVersion.java | 5 + .../dependency/DependencyVersions.java | 93 +++++++++++++++++++ .../data/release/issues/IssueTracker.java | 13 ++- .../data/release/issues/github/GitHub.java | 32 ++++--- .../data/release/issues/jira/Jira.java | 9 +- .../DependencyOperationsIntegrationTests.java | 17 ++-- .../DependencyUpgradeProposalsUnitTests.java | 6 +- .../jira/JiraConnectorIntegrationTests.java | 4 +- 11 files changed, 202 insertions(+), 79 deletions(-) create mode 100644 release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersions.java diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyCommands.java b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyCommands.java index cf60c8a..aaa65c1 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyCommands.java @@ -32,6 +32,8 @@ import java.util.stream.Collectors; import org.springframework.data.release.CliComponent; import org.springframework.data.release.TimedCommand; import org.springframework.data.release.git.GitOperations; +import org.springframework.data.release.issues.Tickets; +import org.springframework.data.release.model.ModuleIteration; import org.springframework.data.release.model.Project; import org.springframework.data.release.model.Projects; import org.springframework.data.release.model.TrainIteration; @@ -84,7 +86,7 @@ public class DependencyCommands extends TimedCommand { Map dependencies = new TreeMap<>(); for (Project project : projects) { - dependencies.putAll(operations.getCurrentDependencies(project)); + operations.getCurrentDependencies(project).forEach(dependencies::put); } StringBuilder report = new StringBuilder(); @@ -103,22 +105,28 @@ public class DependencyCommands extends TimedCommand { } @CliCommand(value = "dependency upgrade") - public void check(@CliOption(key = "", mandatory = true) TrainIteration iteration) + public void upgrade(@CliOption(key = "", mandatory = true) TrainIteration iteration) throws IOException, InterruptedException { - git.checkout(iteration.getTrain()); + git.checkout(iteration.getTrain(), false); logger.log(iteration, "Applying dependency upgrades to Spring Data Build"); - Properties properties = loadDependencyUpgrades(iteration); + ModuleIteration module = iteration.getModule(Projects.BUILD); - Map dependencyUpgrades = DependencyUpgradeProposals.fromProperties(iteration, - properties); + DependencyVersions dependencyVersions = loadDependencyUpgrades(module); - operations.createUpgradeTickets(iteration, Projects.BUILD, dependencyUpgrades); - operations.upgradeDependencies(iteration, Projects.BUILD, dependencyUpgrades); + operations.createUpgradeTickets(module, dependencyVersions); + Tickets tickets = operations.upgradeDependencies(module, dependencyVersions); + + git.push(module); + + // Allow GitHub to catch up with ticket notifications. + Thread.sleep(1500); + + operations.closeUpgradeTickets(module, tickets); } - protected Properties loadDependencyUpgrades(@CliOption(key = "", mandatory = true) TrainIteration iteration) + private DependencyVersions loadDependencyUpgrades(ModuleIteration iteration) throws IOException { if (!Files.exists(Paths.get(BUILD_PROPERTIES))) { @@ -129,7 +137,8 @@ public class DependencyCommands extends TimedCommand { try (FileInputStream fis = new FileInputStream(BUILD_PROPERTIES)) { properties.load(fis); } - return properties; + + return DependencyUpgradeProposals.fromProperties(iteration.getTrainIteration(), properties); } private void checkModuleDependencies(TrainIteration iteration, boolean reportAll) throws IOException { diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java index bc9f9ec..8d2f637 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyOperations.java @@ -46,7 +46,6 @@ import org.springframework.data.release.model.Iteration; import org.springframework.data.release.model.ModuleIteration; import org.springframework.data.release.model.Project; import org.springframework.data.release.model.Projects; -import org.springframework.data.release.model.TrainIteration; import org.springframework.data.release.utils.ExecutionUtils; import org.springframework.data.release.utils.Logger; import org.springframework.data.util.Streamable; @@ -92,10 +91,10 @@ public class DependencyOperations { */ public DependencyUpgradeProposals getDependencyUpgradeProposals(Project project, Iteration iteration) { - Map currentDependencies = getCurrentDependencies(project); + DependencyVersions currentDependencies = getCurrentDependencies(project); Map proposals = Collections.synchronizedMap(new LinkedHashMap<>()); - ExecutionUtils.run(executor, Streamable.of(currentDependencies.keySet()), dependency -> { + ExecutionUtils.run(executor, Streamable.of(currentDependencies.getDependencies()), dependency -> { DependencyVersion currentVersion = currentDependencies.get(dependency); List versions = getAvailableVersions(dependency); @@ -110,17 +109,16 @@ public class DependencyOperations { /** * Ensures there's a upgrade ticket for each dependency to upgrade. * - * @param iteration - * @param project + * @param module * @param dependencyVersions */ - public void createUpgradeTickets(TrainIteration iteration, Project project, - Map dependencyVersions) { + public void createUpgradeTickets(ModuleIteration module, DependencyVersions dependencyVersions) { - Map upgrades = getDependencyUpgradesToApply(project, dependencyVersions); + Project project = module.getProject(); + DependencyVersions upgrades = getDependencyUpgradesToApply(project, dependencyVersions); IssueTracker tracker = this.tracker.getRequiredPluginFor(project); - Tickets tickets = tracker.getTicketsFor(iteration); + Tickets tickets = tracker.getTicketsFor(module); upgrades.forEach((dependency, dependencyVersion) -> { @@ -131,42 +129,40 @@ public class DependencyOperations { logger.log(project, "Found upgrade ticket %s", upgradeTicket.get()); } else { - ModuleIteration module = iteration.getModule(project); - logger.log(module, "Creating upgrade ticket for %s", upgradeTicketSummary); tracker.createTicket(module, upgradeTicketSummary, IssueTracker.TicketType.DependencyUpgrade); } }); + + // flush cache + tracker.reset(); } /** - * Verifies dependencies to upgrade, applies the upgrade, creates a commit, pushes the repository and resolves the - * upgrade ticket. + * Verifies dependencies to upgrade, applies the upgrade, creates a commit. * - * @param iteration - * @param project + * @param module * @param dependencyVersions - * @throws InterruptedException */ - public void upgradeDependencies(TrainIteration iteration, Project project, - Map dependencyVersions) throws InterruptedException { + public Tickets upgradeDependencies(ModuleIteration module, DependencyVersions dependencyVersions) { - Map upgrades = getDependencyUpgradesToApply(project, dependencyVersions); + Project project = module.getProject(); + DependencyVersions upgrades = getDependencyUpgradesToApply(project, dependencyVersions); ProjectDependencies dependencies = ProjectDependencies.get(project); - ModuleIteration module = iteration.getModule(project); if (upgrades.isEmpty()) { logger.log(module, "No dependency upgrades to apply"); } IssueTracker tracker = this.tracker.getRequiredPluginFor(project); - Tickets tickets = tracker.getTicketsFor(iteration); + Tickets tickets = tracker.getTicketsFor(module); List ticketsToClose = new ArrayList<>(); upgrades.forEach((dependency, dependencyVersion) -> { String upgradeTicketSummary = getUpgradeTicketSummary(dependency, dependencyVersion); Ticket upgradeTicket = getDependencyUpgradeTicket(tickets, upgradeTicketSummary).get(); + tracker.assignTicketToMe(project, upgradeTicket); String versionProperty = dependencies.getVersionPropertyFor(dependency); File pom = getPomFile(project); @@ -174,35 +170,36 @@ public class DependencyOperations { it.setProperty(versionProperty, dependencyVersion.getIdentifier()); }); - gitOperations.commit(module, upgradeTicket, upgradeTicketSummary, Optional.empty(), pom); + gitOperations.commit(module, upgradeTicket, upgradeTicketSummary, Optional.empty()); ticketsToClose.add(upgradeTicket); }); - gitOperations.push(module); + return new Tickets(ticketsToClose); + } - // Allow GitHub to catch up with ticket notifications. - Thread.sleep(1500); + public void closeUpgradeTickets(ModuleIteration module, Tickets tickets) { - for (Ticket ticket : ticketsToClose) { + IssueTracker tracker = this.tracker.getRequiredPluginFor(module.getProject()); + + for (Ticket ticket : tickets) { tracker.closeTicket(module, ticket); } } - private Map getDependencyUpgradesToApply(Project project, - Map dependencyVersions) { + private DependencyVersions getDependencyUpgradesToApply(Project project, DependencyVersions dependencyVersions) { - Map currentDependencies = getCurrentDependencies(project); + DependencyVersions currentDependencies = getCurrentDependencies(project); Map upgrades = new LinkedHashMap<>(); currentDependencies.forEach((dependency, dependencyVersion) -> { - DependencyVersion upgradeVersion = dependencyVersions.get(dependency); - - if (upgradeVersion == null) { + if (!dependencyVersions.hasDependency(dependency)) { return; } + DependencyVersion upgradeVersion = dependencyVersions.get(dependency); + if (upgradeVersion.equals(dependencyVersion)) { logger.log(project, "Skipping upgrade of %s (%s)", dependency.getName(), dependencyVersion.getIdentifier()); return; @@ -211,7 +208,7 @@ public class DependencyOperations { upgrades.put(dependency, upgradeVersion); }); - return upgrades; + return new DependencyVersions(upgrades); } private Optional getDependencyUpgradeTicket(Tickets tickets, String upgradeTicketSummary) { @@ -281,10 +278,10 @@ public class DependencyOperations { () -> new IllegalArgumentException("Cannot determine new minor version from " + availableVersions)); } - Map getCurrentDependencies(Project project) { + DependencyVersions getCurrentDependencies(Project project) { if (!ProjectDependencies.containsProject(project)) { - return Collections.emptyMap(); + return DependencyVersions.empty(); } File pom = getPomFile(project); @@ -314,7 +311,7 @@ public class DependencyOperations { } } - return versions; + return new DependencyVersions(versions); }); } diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java index 9924969..582432d 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyUpgradeProposals.java @@ -134,7 +134,7 @@ public class DependencyUpgradeProposals { * @param properties * @return */ - public static Map fromProperties(TrainIteration iteration, Properties properties) { + public static DependencyVersions fromProperties(TrainIteration iteration, Properties properties) { Pattern keyPattern = Pattern.compile("dependency\\[([a-zA-Z0-9\\-\\.]+):([a-zA-Z0-9\\-\\.]+)\\]"); @@ -169,7 +169,7 @@ public class DependencyUpgradeProposals { }); - return result; + return new DependencyVersions(result); } } diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersion.java b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersion.java index 0009475..a122d9a 100644 --- a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersion.java +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersion.java @@ -27,6 +27,11 @@ import java.util.regex.Pattern; import org.springframework.data.release.model.Version; /** + * Value object representing a dependency version. The primary identifier is {@link #identifier} that corresponds with + * the actual version identifier. Version identifiers are attempted to be parsed into either a version following Spring + * Version or SemVer rules ({@code 1.2.3.RELEASE}, {@code 1.2.3-rc1}) or train name with counter rules + * ({@code Foo-RELEASE}, {@code Foo-SR1}). + * * @author Mark Paluch */ @Value diff --git a/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersions.java b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersions.java new file mode 100644 index 0000000..bd320f9 --- /dev/null +++ b/release-tools/src/main/java/org/springframework/data/release/dependency/DependencyVersions.java @@ -0,0 +1,93 @@ +/* + * Copyright 2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.data.release.dependency; + +import lombok.AccessLevel; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Value; + +import java.util.Collection; +import java.util.Collections; +import java.util.Map; +import java.util.function.BiConsumer; + +/** + * Value upgrade capturing {@link DependencyVersion} for a {@link Dependency}. + * + * @author Mark Paluch + */ +@Value +@RequiredArgsConstructor(access = AccessLevel.PACKAGE) +class DependencyVersions { + + @Getter Map versions; + + public static DependencyVersions empty() { + return new DependencyVersions(Collections.emptyMap()); + } + + /** + * Returns whether there's a version specified for {@link Dependency}. + * + * @param dependency + * @return + */ + public boolean hasDependency(Dependency dependency) { + return versions.containsKey(dependency); + } + + /** + * Returns the {@link DependencyVersion} for {@link Dependency} or throws {@link IllegalArgumentException} if no + * version was specified. It's recommended to check whether a version has been specified using + * {@link #hasDependency(Dependency)}. + * + * @param dependency + * @return + * @see #hasDependency(Dependency) + */ + public DependencyVersion get(Dependency dependency) { + + if (!hasDependency(dependency)) { + throw new IllegalArgumentException(String.format("No such dependency: %s", dependency)); + } + + return versions.get(dependency); + } + + /** + * Apply the {@code action} to all dependeny/dependency version pairs. + * + * @param action + */ + public void forEach(BiConsumer action) { + versions.forEach(action); + } + + /** + * Returns whether dependency versions are configured. + * + * @return + */ + public boolean isEmpty() { + return versions.isEmpty(); + } + + public Collection getDependencies() { + return versions.keySet(); + } + +} diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java index 34fb3b8..c6fc6f6 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/IssueTracker.java @@ -39,13 +39,21 @@ public interface IssueTracker extends Plugin { void reset(); /** - * Returns all {@link Tickets} for the given {@link Train} and {@link Iteration}. + * Returns all {@link Tickets} for the given {@link TrainIteration}. * * @param iteration must not be {@literal null}. * @return */ Tickets getTicketsFor(TrainIteration iteration); + /** + * Returns all {@link Tickets} for the given {@link ModuleIteration}. + * + * @param iteration must not be {@literal null}. + * @return + */ + Tickets getTicketsFor(ModuleIteration iteration); + /** * Returns all {@link Tickets} for the given {@link Train} and {@link Iteration}. * @@ -109,9 +117,10 @@ public interface IssueTracker extends Plugin { /** * Assigns the ticket to the current user. * + * @param project must not be {@literal null}. * @param ticket must not be {@literal null}. */ - void assignTicketToMe(Ticket ticket); + Ticket assignTicketToMe(Project project, Ticket ticket); /** * Assigns the release ticket for the given {@link ModuleIteration} to the current user. diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java index 025b1da..24681e2 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/github/GitHub.java @@ -290,8 +290,22 @@ class GitHub extends GitHubSupport implements IssueTracker { * @see org.springframework.data.release.jira.IssueTracker#assignTicketToMe(org.springframework.data.release.jira.Ticket) */ @Override - public void assignTicketToMe(Ticket ticket) { - logger.log("Ticket", "Skipping ticket assignment for %s", ticket); + public Ticket assignTicketToMe(Project project, Ticket ticket) { + + Assert.notNull(ticket, "Ticket must not be null."); + + String repositoryName = GitProject.of(project).getRepositoryName(); + + Map parameters = newUrlTemplateVariables(); + parameters.put("repoName", repositoryName); + parameters.put("id", stripHash(ticket)); + + GitHubWriteIssue edit = GitHubWriteIssue.assignedTo(properties.getUsername()); + + GitHubReadIssue response = operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.PATCH, + new HttpEntity<>(edit, new HttpHeaders()), ISSUE_TYPE, parameters).getBody(); + + return toTicket(response); } /* @@ -303,19 +317,7 @@ class GitHub extends GitHubSupport implements IssueTracker { Assert.notNull(module, "ModuleIteration must not be null."); - Ticket releaseTicketFor = getReleaseTicketFor(module); - String repositoryName = GitProject.of(module.getProject()).getRepositoryName(); - - Map parameters = newUrlTemplateVariables(); - parameters.put("repoName", repositoryName); - parameters.put("id", stripHash(releaseTicketFor)); - - GitHubWriteIssue edit = GitHubWriteIssue.assignedTo(properties.getUsername()); - - GitHubReadIssue response = operations.exchange(ISSUE_BY_ID_URI_TEMPLATE, HttpMethod.PATCH, - new HttpEntity<>(edit, new HttpHeaders()), ISSUE_TYPE, parameters).getBody(); - - return toTicket(response); + return assignTicketToMe(module.getProject(), getReleaseTicketFor(module)); } /* diff --git a/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java b/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java index f45e5dc..face465 100644 --- a/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java +++ b/release-tools/src/main/java/org/springframework/data/release/issues/jira/Jira.java @@ -351,8 +351,9 @@ class Jira implements JiraConnector { * @see org.springframework.data.release.jira.JiraConnector#assignTicketToMe(org.springframework.data.release.jira.Ticket) */ @Override - public void assignTicketToMe(Ticket ticket) { + public Ticket assignTicketToMe(Project project, Ticket ticket) { + Assert.notNull(project, "Project must not be null."); Assert.notNull(ticket, "Ticket must not be null."); HttpHeaders httpHeaders = new HttpHeaders(); @@ -365,7 +366,7 @@ class Jira implements JiraConnector { if (currentIssue.isAssignedTo(jiraProperties.getUsername())) { logger.log("Ticket", "Skipping self-assignment of %s", ticket); - return; + return ticket; } JiraIssueUpdate editMeta = JiraIssueUpdate.create().assignTo(jiraProperties.getUsername()); @@ -379,6 +380,8 @@ class Jira implements JiraConnector { logger.warn("Ticket", "Self-assignment of %s failed with status %s (%s)", ticket, e.getStatusCode(), e.getResponseBodyAsString()); } + + return ticket; } /* @@ -389,7 +392,7 @@ class Jira implements JiraConnector { public Ticket assignReleaseTicketToMe(ModuleIteration module) { Ticket ticket = getReleaseTicketFor(module); - assignTicketToMe(ticket); + assignTicketToMe(module.getProject(), ticket); return ticket; } diff --git a/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyOperationsIntegrationTests.java b/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyOperationsIntegrationTests.java index ec5735d..798aa18 100644 --- a/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyOperationsIntegrationTests.java +++ b/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyOperationsIntegrationTests.java @@ -23,6 +23,7 @@ import java.net.URL; import java.net.URLConnection; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -31,6 +32,7 @@ import org.springframework.data.release.AbstractIntegrationTests; import org.springframework.data.release.git.GitOperations; import org.springframework.data.release.model.Iteration; import org.springframework.data.release.model.Projects; +import org.springframework.data.release.model.ReleaseTrains; /** * Integration tests for {@link DependencyOperations}. @@ -55,6 +57,11 @@ class DependencyOperationsIntegrationTests extends AbstractIntegrationTests { } } + @BeforeEach + void setUp() { + git.checkout(ReleaseTrains.MOORE); + } + @Test void shouldDiscoverDependencyVersions() { assertThat(operations.getAvailableVersions(Dependencies.PROJECT_REACTOR)).isNotEmpty(); @@ -62,17 +69,15 @@ class DependencyOperationsIntegrationTests extends AbstractIntegrationTests { @Test void shouldReportExistingDependencyVersions() { - assertThat(operations.getCurrentDependencies(Projects.BUILD)).isNotEmpty(); + assertThat(operations.getCurrentDependencies(Projects.BUILD).isEmpty()).isFalse(); } @Test void shouldReportExistingOptionalDependencies() { - // git.checkout(ReleaseTrains.MOORE); - - assertThat(operations.getCurrentDependencies(Projects.CASSANDRA)).hasSize(1); - assertThat(operations.getCurrentDependencies(Projects.MONGO_DB)).hasSize(1); - assertThat(operations.getCurrentDependencies(Projects.NEO4J)).hasSize(1); + assertThat(operations.getCurrentDependencies(Projects.CASSANDRA).getVersions()).hasSize(1); + assertThat(operations.getCurrentDependencies(Projects.MONGO_DB).getVersions()).hasSize(2); + assertThat(operations.getCurrentDependencies(Projects.NEO4J).getVersions()).hasSize(1); } @Test diff --git a/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyUpgradeProposalsUnitTests.java b/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyUpgradeProposalsUnitTests.java index f934a4b..e5fbbde 100644 --- a/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyUpgradeProposalsUnitTests.java +++ b/release-tools/src/test/java/org/springframework/data/release/dependency/DependencyUpgradeProposalsUnitTests.java @@ -17,7 +17,6 @@ package org.springframework.data.release.dependency; import static org.assertj.core.api.Assertions.*; -import java.util.Map; import java.util.Properties; import org.junit.jupiter.api.Test; @@ -40,9 +39,10 @@ class DependencyUpgradeProposalsUnitTests { properties.put("dependency.iteration", "M1"); properties.put("dependency[org.assertj:assertj-core]", "3.18.1"); - Map dependencies = DependencyUpgradeProposals + DependencyVersions dependencies = DependencyUpgradeProposals .fromProperties(ReleaseTrains.PASCAL.getIteration(Iteration.M1), properties); - assertThat(dependencies).hasSize(1).containsEntry(Dependencies.ASSERTJ, DependencyVersion.of("3.18.1")); + assertThat(dependencies.getVersions()).hasSize(1).containsEntry(Dependencies.ASSERTJ, + DependencyVersion.of("3.18.1")); } } diff --git a/release-tools/src/test/java/org/springframework/data/release/issues/jira/JiraConnectorIntegrationTests.java b/release-tools/src/test/java/org/springframework/data/release/issues/jira/JiraConnectorIntegrationTests.java index 428967d..0814f70 100644 --- a/release-tools/src/test/java/org/springframework/data/release/issues/jira/JiraConnectorIntegrationTests.java +++ b/release-tools/src/test/java/org/springframework/data/release/issues/jira/JiraConnectorIntegrationTests.java @@ -251,7 +251,7 @@ class JiraConnectorIntegrationTests extends AbstractIntegrationTests { mockService.stubFor(put(urlPathMatching("/rest/api/2/issue/DATAREDIS-302")).// willReturn(aResponse().withStatus(204))); - jira.assignTicketToMe(new Ticket("DATAREDIS-302", "", null, null)); + jira.assignTicketToMe(Projects.REDIS, new Ticket("DATAREDIS-302", "", null, null)); verify(putRequestedFor(urlPathMatching("/rest/api/2/issue/DATAREDIS-302")).withRequestBody(equalToJson( "{\"update\":{\"assignee\":[ {\"set\":{\"name\":\"dummy\"}} ] }, \"transition\":{}, \"fields\":{}}"))); @@ -271,7 +271,7 @@ class JiraConnectorIntegrationTests extends AbstractIntegrationTests { mockService.stubFor(post(urlPathMatching("/rest/api/2/issue/DATACASS-302")).// willReturn(aResponse().withStatus(204))); - jira.assignTicketToMe(new Ticket("DATACASS-302", "", null, null)); + jira.assignTicketToMe(Projects.CASSANDRA, new Ticket("DATACASS-302", "", null, null)); verify(0, postRequestedFor(urlPathMatching("/rest/api/2/issue/DATACASS-302"))); }