Fix MavenBuild#hasDependency to test all candidates

Closes gh-1146
This commit is contained in:
Stephane Nicoll 2020-11-12 10:59:19 +01:00
parent fd409c5340
commit e97233b107
3 changed files with 45 additions and 3 deletions

View File

@ -193,13 +193,19 @@ public class MavenBuildAssert extends AbstractTextAssert<MavenBuildAssert> {
if (dependency.getGroupId().equals(actual.getGroupId())
&& dependency.getArtifactId().equals(actual.getArtifactId())) {
if (dependency.getVersion() != null) {
new StringAssert(actual.getVersion()).isEqualTo(dependency.getVersion());
if (!dependency.getVersion().equals(actual.getVersion())) {
return false;
}
}
if (dependency.getScope() != null) {
new StringAssert(actual.getScope()).isEqualTo(dependency.getScope());
if (!dependency.getScope().equals(actual.getScope())) {
return false;
}
}
if (dependency.getType() != null) {
new StringAssert(actual.getType()).isEqualTo(dependency.getType());
if (!dependency.getType().equals(actual.getType())) {
return false;
}
}
return true;
}

View File

@ -20,6 +20,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import io.spring.initializr.metadata.Dependency;
import org.assertj.core.api.AssertProvider;
import org.junit.jupiter.api.Test;
@ -184,6 +185,15 @@ class MavenBuildAssertTests {
.hasDependency("com.example.acme", "library-test", "1.3.0", "runtime"));
}
@Test
void hasDependencyWithMultipleCandidates() {
Dependency main = Dependency.withId("acme", "com.example.acme", "library", "1.2.0");
Dependency test = Dependency.withId("acme", "com.example.acme", "library", "1.2.0", "test");
test.setType("test-jar");
assertThat(forMavenBuild("sample-dependency-multiple-identical-gav-pom.xml")).hasDependency(main)
.hasDependency(test);
}
@Test
void doesNotHaveDependencyArtifactId() {
assertThat(forSampleMavenBuild()).doesNotHaveDependency("com.example.acme", "wrong");

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.example.acme</groupId>
<artifactId>library</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.example.acme</groupId>
<artifactId>library</artifactId>
<version>1.2.0</version>
<scope>test</scope>
<type>test-jar</type>
</dependency>
</dependencies>
</project>