Clean build assertions

This commit is contained in:
Stephane Nicoll 2019-02-05 16:36:56 +01:00
parent 73415ea21d
commit 8a0d413a06
4 changed files with 52 additions and 33 deletions

View File

@ -81,13 +81,13 @@ public abstract class AbstractProjectGeneratorTests {
protected PomAssert generateMavenPom(ProjectRequest request) {
request.setType("maven-build");
String content = new String(this.projectGenerator.generateMavenPom(request));
return new PomAssert(content).validateProjectRequest(request);
return new PomAssert(content);
}
protected GradleBuildAssert generateGradleBuild(ProjectRequest request) {
request.setType("gradle-build");
String content = new String(this.projectGenerator.generateGradleBuild(request));
return new GradleBuildAssert(content).validateProjectRequest(request);
return new GradleBuildAssert(content);
}
protected ProjectAssert generateProject(ProjectRequest request) {

View File

@ -49,14 +49,22 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
@Test
void defaultMavenPom() {
ProjectRequest request = createProjectRequest("web");
generateMavenPom(request).hasNoRepository().hasSpringBootStarterDependency("web");
generateMavenPom(request).hasGroupId(request.getGroupId())
.hasArtifactId(request.getArtifactId()).hasVersion(request.getVersion())
.hasPackaging(request.getPackaging()).hasName(request.getName())
.hasDescription(request.getDescription())
.hasJavaVersion(request.getJavaVersion())
.hasSpringBootParent(request.getBootVersion()).hasNoRepository()
.hasSpringBootStarterDependency("web");
verifyProjectSuccessfulEventFor(request);
}
@Test
void defaultGradleBuild() {
ProjectRequest request = createProjectRequest("web");
generateGradleBuild(request).doesNotContain("import");
generateGradleBuild(request).hasVersion(request.getVersion())
.hasSpringBootBuildScriptPlugin(request.getBootVersion())
.hasJavaVersion(request.getJavaVersion()).doesNotContain("import");
verifyProjectSuccessfulEventFor(request);
}
@ -81,6 +89,37 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
verifyProjectSuccessfulEventFor(request);
}
@Test
void mavenBuildWithCustomCoordinates() {
ProjectRequest request = createProjectRequest("web");
request.setGroupId("com.example.test");
request.setArtifactId("test-project");
request.setVersion("1.0.0.TEST-SNAPSHOT");
request.setPackaging("war");
request.setName("Test Project");
request.setDescription("Test Project Description");
generateMavenPom(request).hasGroupId("com.example.test")
.hasArtifactId("test-project").hasVersion("1.0.0.TEST-SNAPSHOT")
.hasPackaging("war").hasName("Test Project")
.hasDescription("Test Project Description");
}
@Test
void gradleBuildWithProjectVersion() {
ProjectRequest request = createProjectRequest("web");
request.setVersion("1.0.0.TEST-SNAPSHOT");
generateGradleBuild(request).hasVersion("1.0.0.TEST-SNAPSHOT");
verifyProjectSuccessfulEventFor(request);
}
@Test
void gradleBuildWithJavaVersion() {
ProjectRequest request = createProjectRequest("web");
request.setJavaVersion("11");
generateGradleBuild(request).hasJavaVersion("11");
verifyProjectSuccessfulEventFor(request);
}
@Test
void noDependencyAddsRootStarter() {
ProjectRequest request = createProjectRequest();
@ -504,7 +543,9 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
void gradleBuildWithSpringBoot15() {
ProjectRequest request = createProjectRequest("web");
request.setBootVersion("1.5.20.BUILD-SNAPSHOT");
generateGradleBuild(request).contains("apply plugin: 'org.springframework.boot'")
generateGradleBuild(request)
.hasSpringBootBuildScriptPlugin("1.5.20.BUILD-SNAPSHOT")
.contains("apply plugin: 'org.springframework.boot'")
.contains(
"implementation 'org.springframework.boot:spring-boot-starter-web'")
.contains(
@ -516,7 +557,8 @@ class ProjectGeneratorTests extends AbstractProjectGeneratorTests {
void gradleBuildWithSpringBoot20() {
ProjectRequest request = createProjectRequest("web");
request.setBootVersion("2.0.0.RELEASE");
generateGradleBuild(request).contains("apply plugin: 'org.springframework.boot'")
generateGradleBuild(request).hasSpringBootBuildScriptPlugin("2.0.0.RELEASE")
.contains("apply plugin: 'org.springframework.boot'")
.doesNotContain("apply plugin: 'spring-boot'")
.contains("apply plugin: 'io.spring.dependency-management'")
.contains(

View File

@ -16,8 +16,6 @@
package io.spring.initializr.test.generator;
import io.spring.initializr.generator.ProjectRequest;
import static org.assertj.core.api.Assertions.assertThat;
/**
@ -33,22 +31,14 @@ public class GradleBuildAssert {
this.content = content;
}
/**
* Validate that this generated gradle build validates against its request.
* @param request the source request
* @return a gradle assert
*/
public GradleBuildAssert validateProjectRequest(ProjectRequest request) {
return hasVersion(request.getVersion()).hasBootVersion(request.getBootVersion())
.hasJavaVersion(request.getJavaVersion());
}
public GradleBuildAssert hasVersion(String version) {
return contains("version = '" + version + "'");
}
public GradleBuildAssert hasBootVersion(String bootVersion) {
return contains("springBootVersion = '" + bootVersion + "'");
public GradleBuildAssert hasSpringBootBuildScriptPlugin(String bootVersion) {
return contains("ext {").contains("springBootVersion = '" + bootVersion + "'")
.contains(
"classpath(\"org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}\")");
}
public GradleBuildAssert hasJavaVersion(String javaVersion) {

View File

@ -21,7 +21,6 @@ import java.net.URL;
import java.util.LinkedHashMap;
import java.util.Map;
import io.spring.initializr.generator.ProjectRequest;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrConfiguration.Env.Maven.ParentPom;
@ -82,18 +81,6 @@ public class PomAssert {
parseRepositories();
}
/**
* Validate that this generated pom validates against its request.
* @param request the source request
* @return a POM assert
*/
public PomAssert validateProjectRequest(ProjectRequest request) {
return hasGroupId(request.getGroupId()).hasArtifactId(request.getArtifactId())
.hasVersion(request.getVersion()).hasPackaging(request.getPackaging())
.hasName(request.getName()).hasDescription(request.getDescription())
.hasJavaVersion(request.getJavaVersion());
}
public PomAssert contains(String expression) {
assertThat(this.content).contains(expression);
return this;