-
-
Notifications
You must be signed in to change notification settings - Fork 217
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Module to add cucumber to a project
- Loading branch information
Showing
35 changed files
with
1,698 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
...ter/lite/generator/server/springboot/cucumber/application/CucumberApplicationService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package tech.jhipster.lite.generator.server.springboot.cucumber.application; | ||
|
||
import org.springframework.stereotype.Service; | ||
import tech.jhipster.lite.generator.module.JHipsterModules; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterModule; | ||
import tech.jhipster.lite.generator.server.springboot.cucumber.domain.CucumberModuleFactory; | ||
import tech.jhipster.lite.generator.server.springboot.cucumber.domain.CucumberModuleProperties; | ||
|
||
@Service | ||
public class CucumberApplicationService { | ||
|
||
private final JHipsterModules modules; | ||
private final CucumberModuleFactory factory; | ||
|
||
public CucumberApplicationService(JHipsterModules modules) { | ||
this.modules = modules; | ||
|
||
factory = new CucumberModuleFactory(); | ||
} | ||
|
||
public void add(CucumberModuleProperties properties) { | ||
JHipsterModule module = factory.buildModule(properties); | ||
|
||
modules.apply(properties.indentation(), module); | ||
} | ||
} |
108 changes: 108 additions & 0 deletions
108
...tech/jhipster/lite/generator/server/springboot/cucumber/domain/CucumberModuleFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
package tech.jhipster.lite.generator.server.springboot.cucumber.domain; | ||
|
||
import static tech.jhipster.lite.generator.module.domain.JHipsterModule.*; | ||
|
||
import tech.jhipster.lite.error.domain.Assert; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterModule; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterSource; | ||
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependency; | ||
import tech.jhipster.lite.generator.module.domain.javadependency.JavaDependencyScope; | ||
|
||
public class CucumberModuleFactory { | ||
|
||
private static final String CUCUMBER_GROUP_ID = "io.cucumber"; | ||
private static final String CUCUMBER_VERSION = "cucumber.version"; | ||
|
||
public JHipsterModule buildModule(CucumberModuleProperties properties) { | ||
Assert.notNull("properties", properties); | ||
|
||
String packagePath = properties.basePackage().path(); | ||
String applicationName = properties.projectBaseName().capitalized(); | ||
JHipsterSource source = from("server/springboot/cucumber"); | ||
|
||
//@formatter:off | ||
return moduleForProject(properties.project()) | ||
.context() | ||
.packageName(properties.basePackage()) | ||
.put("applicationName", applicationName) | ||
.and() | ||
.files() | ||
.batch(source, toSrcTestJava().append(packagePath).append("cucumber")) | ||
.add("AsyncElementAsserter.java") | ||
.add("AsyncHeaderAsserter.java") | ||
.add("AsyncResponseAsserter.java") | ||
.add("Awaiter.java") | ||
.add("CucumberAssertions.java") | ||
.add("CucumberConfiguration.java") | ||
.add("CucumberJson.java") | ||
.add("CucumberTest.java") | ||
.add("CucumberTestContext.java") | ||
.add("CucumberTestContextUnitTest.java") | ||
.add("ElementAsserter.java") | ||
.add("ElementAssertions.java") | ||
.add("HeaderAsserter.java") | ||
.add("HeaderAssertions.java") | ||
.add("ResponseAsserter.java") | ||
.add("SyncElementAsserter.java") | ||
.add("SyncHeaderAsserter.java") | ||
.add("SyncResponseAsserter.java") | ||
.and() | ||
.add(source.template("cucumber.md"), to("documentation/cucumber.md")) | ||
.add(source.file("gitkeep"), to("src/test/features/.gitkeep")) | ||
.and() | ||
.javaDependencies() | ||
.add(cucumberJunitDependency()) | ||
.add(cucumberJavaDependency()) | ||
.add(cucumberSpringDependency()) | ||
.add(junitVintageDependency()) | ||
.add(testNgDependency()) | ||
.add(awaitilityDepencency()) | ||
.and() | ||
.build(); | ||
//@formatter:on | ||
} | ||
|
||
private JavaDependency cucumberJunitDependency() { | ||
return javaDependency() | ||
.groupId(CUCUMBER_GROUP_ID) | ||
.artifactId("cucumber-junit") | ||
.versionSlug(CUCUMBER_VERSION) | ||
.scope(JavaDependencyScope.TEST) | ||
.build(); | ||
} | ||
|
||
private JavaDependency cucumberJavaDependency() { | ||
return javaDependency() | ||
.groupId(CUCUMBER_GROUP_ID) | ||
.artifactId("cucumber-java") | ||
.versionSlug(CUCUMBER_VERSION) | ||
.scope(JavaDependencyScope.TEST) | ||
.build(); | ||
} | ||
|
||
private JavaDependency cucumberSpringDependency() { | ||
return javaDependency() | ||
.groupId(CUCUMBER_GROUP_ID) | ||
.artifactId("cucumber-spring") | ||
.versionSlug(CUCUMBER_VERSION) | ||
.scope(JavaDependencyScope.TEST) | ||
.build(); | ||
} | ||
|
||
private JavaDependency junitVintageDependency() { | ||
return javaDependency().groupId("org.junit.vintage").artifactId("junit-vintage-engine").scope(JavaDependencyScope.TEST).build(); | ||
} | ||
|
||
private JavaDependency testNgDependency() { | ||
return javaDependency() | ||
.groupId("org.testng") | ||
.artifactId("testng") | ||
.versionSlug("testng.version") | ||
.scope(JavaDependencyScope.TEST) | ||
.build(); | ||
} | ||
|
||
private JavaDependency awaitilityDepencency() { | ||
return javaDependency().groupId("org.awaitility").artifactId("awaitility").scope(JavaDependencyScope.TEST).build(); | ||
} | ||
} |
90 changes: 90 additions & 0 deletions
90
...h/jhipster/lite/generator/server/springboot/cucumber/domain/CucumberModuleProperties.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
package tech.jhipster.lite.generator.server.springboot.cucumber.domain; | ||
|
||
import tech.jhipster.lite.error.domain.Assert; | ||
import tech.jhipster.lite.generator.module.domain.Indentation; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterBasePackage; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterProjectBaseName; | ||
import tech.jhipster.lite.generator.module.domain.JHipsterProjectFolder; | ||
import tech.jhipster.lite.generator.project.domain.Project; | ||
|
||
public class CucumberModuleProperties { | ||
|
||
private final JHipsterProjectFolder project; | ||
private final Indentation indentation; | ||
private final JHipsterBasePackage basePackage; | ||
private final JHipsterProjectBaseName projectBaseName; | ||
|
||
private CucumberModuleProperties(CucumberModulePropertiesBuilder builder) { | ||
project = new JHipsterProjectFolder(builder.project); | ||
indentation = Indentation.from(builder.indentation); | ||
basePackage = new JHipsterBasePackage(builder.basePackage); | ||
projectBaseName = new JHipsterProjectBaseName(builder.projectBaseName); | ||
} | ||
|
||
public static CucumberModuleProperties from(Project project) { | ||
Assert.notNull("project", project); | ||
|
||
return builder() | ||
.project(project.getFolder()) | ||
.indentation(project.getIntegerConfig("prettierDefaultIndent").orElse(null)) | ||
.basePackage(project.getPackageNamePath().orElse(null)) | ||
.projectBaseName(project.getBaseName().orElse(null)) | ||
.build(); | ||
} | ||
|
||
public static CucumberModulePropertiesBuilder builder() { | ||
return new CucumberModulePropertiesBuilder(); | ||
} | ||
|
||
public JHipsterProjectFolder project() { | ||
return project; | ||
} | ||
|
||
public Indentation indentation() { | ||
return indentation; | ||
} | ||
|
||
public JHipsterBasePackage basePackage() { | ||
return basePackage; | ||
} | ||
|
||
public JHipsterProjectBaseName projectBaseName() { | ||
return projectBaseName; | ||
} | ||
|
||
public static class CucumberModulePropertiesBuilder { | ||
|
||
private String project; | ||
private Integer indentation; | ||
private String basePackage; | ||
private String projectBaseName; | ||
|
||
public CucumberModulePropertiesBuilder project(String project) { | ||
this.project = project; | ||
|
||
return this; | ||
} | ||
|
||
public CucumberModulePropertiesBuilder indentation(Integer indentation) { | ||
this.indentation = indentation; | ||
|
||
return this; | ||
} | ||
|
||
public CucumberModulePropertiesBuilder basePackage(String basePackage) { | ||
this.basePackage = basePackage; | ||
|
||
return this; | ||
} | ||
|
||
public CucumberModulePropertiesBuilder projectBaseName(String projectBaseName) { | ||
this.projectBaseName = projectBaseName; | ||
|
||
return this; | ||
} | ||
|
||
public CucumberModuleProperties build() { | ||
return new CucumberModuleProperties(this); | ||
} | ||
} | ||
} |
37 changes: 37 additions & 0 deletions
37
...er/lite/generator/server/springboot/cucumber/infrastructure/primary/CucumberResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package tech.jhipster.lite.generator.server.springboot.cucumber.infrastructure.primary; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import tech.jhipster.lite.generator.project.domain.GeneratorAction; | ||
import tech.jhipster.lite.generator.project.domain.Project; | ||
import tech.jhipster.lite.generator.project.infrastructure.primary.dto.ProjectDTO; | ||
import tech.jhipster.lite.generator.server.springboot.cucumber.application.CucumberApplicationService; | ||
import tech.jhipster.lite.generator.server.springboot.cucumber.domain.CucumberModuleProperties; | ||
import tech.jhipster.lite.technical.infrastructure.primary.annotation.GeneratorStep; | ||
|
||
@RestController | ||
@Tag(name = "Spring Boot") | ||
@RequestMapping("/api/servers/spring-boot/cucumber") | ||
class CucumberResource { | ||
|
||
private final CucumberApplicationService cucumber; | ||
|
||
public CucumberResource(CucumberApplicationService cucumber) { | ||
this.cucumber = cucumber; | ||
} | ||
|
||
@PostMapping | ||
@GeneratorStep(id = GeneratorAction.SPRINGBOOT_CUCUMBER) | ||
@Operation(summary = "Add cucumber integration to project") | ||
@ApiResponse(responseCode = "500", description = "An error occurred while adding cucumber elements") | ||
public void addJavaBase(@RequestBody ProjectDTO projectDTO) { | ||
Project project = ProjectDTO.toProject(projectDTO); | ||
|
||
cucumber.add(CucumberModuleProperties.from(project)); | ||
} | ||
} |
2 changes: 2 additions & 0 deletions
2
src/main/java/tech/jhipster/lite/generator/server/springboot/cucumber/package-info.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
@tech.jhipster.lite.BusinessContext | ||
package tech.jhipster.lite.generator.server.springboot.cucumber; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.