diff --git a/src/main/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilder.java b/src/main/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilder.java index 5bf68c1..8377006 100644 --- a/src/main/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilder.java +++ b/src/main/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilder.java @@ -42,6 +42,9 @@ public BjoernClassesToBuild build(Bjoern bjoern) { private void addJavaDoc(Bjoern bjoern, Builder featureClassBuilder) { StringBuilder javadoc = new StringBuilder(bjoern.getFeature()); + if (StringUtils.isNotBlank(bjoern.getVersion())) { + javadoc.append("\n@version ").append(bjoern.getVersion()); + } if (StringUtils.isNotBlank(bjoern.getReference())) { javadoc.append("\n@see ").append(bjoern.getReferenceAsJavadoc()); } diff --git a/src/main/java/de/mehtrick/bjoern/parser/modell/Bjoern.java b/src/main/java/de/mehtrick/bjoern/parser/modell/Bjoern.java index 64841ec..ab80c8d 100644 --- a/src/main/java/de/mehtrick/bjoern/parser/modell/Bjoern.java +++ b/src/main/java/de/mehtrick/bjoern/parser/modell/Bjoern.java @@ -13,6 +13,7 @@ public class Bjoern { private static final Pattern MARKDOWN_LINK_PATTERN = Pattern.compile("\\[([^\\]]+)\\]\\(([^)]+)\\)"); private String feature; + private String version; private String reference; private BjoernBackground background; private List scenarios; @@ -20,6 +21,7 @@ public class Bjoern { public Bjoern(BjoernZGRModell yamlModell, String path) { setFeature(yamlModell.getFeature()); + setVersion(yamlModell.getVersion()); setReference(yamlModell.getReference()); setScenarios(yamlModell.getScenarios().stream().map(BjoernScenario::new).collect(Collectors.toList())); setFilePath(path); @@ -40,6 +42,14 @@ public void setFeature(String feature) { this.feature = feature; } + public String getVersion() { + return this.version; + } + + public void setVersion(String version) { + this.version = version; + } + public String getReference() { return this.reference; } @@ -126,6 +136,6 @@ public void setFilePath(String filePath) { public String toString() { - return "Bjoern(feature=" + this.getFeature() + ", reference=" + this.getReference() + ", background=" + this.getBackground() + ", scenarios=" + this.getScenarios() + ", filePath=" + this.getFilePath() + ")"; + return "Bjoern(feature=" + this.getFeature() + ", version=" + this.getVersion() + ", reference=" + this.getReference() + ", background=" + this.getBackground() + ", scenarios=" + this.getScenarios() + ", filePath=" + this.getFilePath() + ")"; } } diff --git a/src/main/java/de/mehtrick/bjoern/parser/modell/BjoernZGRModell.java b/src/main/java/de/mehtrick/bjoern/parser/modell/BjoernZGRModell.java index ab0ea18..539406e 100644 --- a/src/main/java/de/mehtrick/bjoern/parser/modell/BjoernZGRModell.java +++ b/src/main/java/de/mehtrick/bjoern/parser/modell/BjoernZGRModell.java @@ -15,12 +15,15 @@ * */ @JsonInclude(JsonInclude.Include.NON_NULL) -@JsonPropertyOrder({ "Feature", "Reference", "Scenarios" }) +@JsonPropertyOrder({ "Feature", "Version", "Reference", "Scenarios" }) public class BjoernZGRModell implements Serializable { @JsonProperty("Feature") private String feature; + @JsonProperty("Version") + private String version; + @JsonProperty("Reference") private String reference; @@ -41,6 +44,16 @@ public void setFeature(String feature) { this.feature = feature; } + @JsonProperty("Version") + public String getVersion() { + return version; + } + + @JsonProperty("Version") + public void setVersion(String version) { + this.version = version; + } + @JsonProperty("Reference") public String getReference() { return reference; @@ -72,6 +85,6 @@ public void setBackground(BjoernZGRBackground background) { } public String toString() { - return "BjoernZGRModell(feature=" + this.getFeature() + ", reference=" + this.getReference() + ", background=" + this.getBackground() + ", bjoernZGRScenarios=" + this.bjoernZGRScenarios + ")"; + return "BjoernZGRModell(feature=" + this.getFeature() + ", version=" + this.getVersion() + ", reference=" + this.getReference() + ", background=" + this.getBackground() + ", bjoernZGRScenarios=" + this.bjoernZGRScenarios + ")"; } } diff --git a/src/main/java/de/mehtrick/bjoern/parser/validator/validations/BjoernKeywords.java b/src/main/java/de/mehtrick/bjoern/parser/validator/validations/BjoernKeywords.java index 22710cf..b28488d 100644 --- a/src/main/java/de/mehtrick/bjoern/parser/validator/validations/BjoernKeywords.java +++ b/src/main/java/de/mehtrick/bjoern/parser/validator/validations/BjoernKeywords.java @@ -6,7 +6,7 @@ public enum BjoernKeywords { - GIVEN("Given:"), WHEN("When:"), THEN("Then:"), BACKGROUND("Background:"), FEATURE("Feature:"), REFERENCE("Reference:"), SCENARIO("- Scenario:"), SCENARIOS("Scenarios:"), STATEMENT("-"); + GIVEN("Given:"), WHEN("When:"), THEN("Then:"), BACKGROUND("Background:"), FEATURE("Feature:"), VERSION("Version:"), REFERENCE("Reference:"), SCENARIO("- Scenario:"), SCENARIOS("Scenarios:"), STATEMENT("-"); public String keyword; diff --git a/src/main/resources/asciidoc.ftlh b/src/main/resources/asciidoc.ftlh index 95340e4..c4caacc 100644 --- a/src/main/resources/asciidoc.ftlh +++ b/src/main/resources/asciidoc.ftlh @@ -1,6 +1,10 @@ = ${feature} :toc: +<#if version??> +Version: ${version} + + <#if referenceAsAsciidoc?? && referenceAsAsciidoc?has_content> Reference: ${referenceAsAsciidoc} diff --git a/src/test/java/de/mehtrick/bjoern/asciidoc/AsciiDocBuildTest.java b/src/test/java/de/mehtrick/bjoern/asciidoc/AsciiDocBuildTest.java index a6e24dd..6ffd386 100644 --- a/src/test/java/de/mehtrick/bjoern/asciidoc/AsciiDocBuildTest.java +++ b/src/test/java/de/mehtrick/bjoern/asciidoc/AsciiDocBuildTest.java @@ -31,6 +31,17 @@ public void testDocGeneration() throws IOException, BjoernMissingPropertyExcepti BjoernDocApplication.main(new String[]{"path=src/test/resources/bjoern.zgr", "docdir=src/gen/resources"}); } + @Test + @DisplayName("Test Doc Generation with Version") + public void testDocGenerationWithVersion() throws IOException, BjoernMissingPropertyException, NotSupportedJunitVersionException { + BjoernDocApplication.main(new String[]{"path=src/test/resources/version.zgr", "docdir=src/gen/resources"}); + File generatedFile = new File("src/gen/resources/version.adoc"); + assertThat(generatedFile).exists(); + String content = new String(Files.readAllBytes(generatedFile.toPath()), StandardCharsets.UTF_8); + assertThat(content).contains("= Test mit Version"); + assertThat(content).contains("Version: 1.0.0"); + } + @Test @DisplayName("Test Doc Generation with Reference") public void testDocGenerationWithReference() throws IOException, BjoernMissingPropertyException, NotSupportedJunitVersionException { diff --git a/src/test/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilderTest.java b/src/test/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilderTest.java index 4a7e022..ac9e398 100644 --- a/src/test/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilderTest.java +++ b/src/test/java/de/mehtrick/bjoern/generator/builder/BjoernFeatureTestClassBuilderTest.java @@ -81,4 +81,16 @@ void testJavadocWithReference() { Assertions.assertThat(mappedFeature.javadoc.toString()).contains("TICKET-123"); } + @Test + void testJavadocWithVersion() { + //given + bjoern = getBjoern("src/test/resources/version.zgr"); + //when + TypeSpec mappedFeature = new BjoernFeatureTestClassBuilder(bjoernCodeGeneratorConfig).build(bjoern).getFeatureClass(); + //then + Assertions.assertThat(mappedFeature.javadoc.toString()).contains("Test mit Version"); + Assertions.assertThat(mappedFeature.javadoc.toString()).contains("@version"); + Assertions.assertThat(mappedFeature.javadoc.toString()).contains("1.0.0"); + } + } diff --git a/src/test/java/de/mehtrick/bjoern/parser/BjoernValidatorTest.java b/src/test/java/de/mehtrick/bjoern/parser/BjoernValidatorTest.java index 02d5f00..61184c0 100644 --- a/src/test/java/de/mehtrick/bjoern/parser/BjoernValidatorTest.java +++ b/src/test/java/de/mehtrick/bjoern/parser/BjoernValidatorTest.java @@ -21,8 +21,8 @@ public void testInvalidKeyword() { Assertions.assertThatExceptionOfType(BjoernValidatorException.class).isThrownBy(() -> { bjoernValidator.validate(" WrongKeyword \r\n \r\n anotherWrongOne", "defaultpath"); } - ).withMessageContaining("ValidationError at line 1: The line starts with an invalid Keyword. Found \" WrongKeyword \". Allowed Keywords are: Given:,When:,Then:,Background:,Feature:,Reference:,- Scenario:,Scenarios:,-. This check is case-sensitive!") - .withMessageContaining("ValidationError at line 3: The line starts with an invalid Keyword. Found \" anotherWrongOne\". Allowed Keywords are: Given:,When:,Then:,Background:,Feature:,Reference:,- Scenario:,Scenarios:,-. This check is case-sensitive!"); + ).withMessageContaining("ValidationError at line 1: The line starts with an invalid Keyword. Found \" WrongKeyword \". Allowed Keywords are: Given:,When:,Then:,Background:,Feature:,Version:,Reference:,- Scenario:,Scenarios:,-. This check is case-sensitive!") + .withMessageContaining("ValidationError at line 3: The line starts with an invalid Keyword. Found \" anotherWrongOne\". Allowed Keywords are: Given:,When:,Then:,Background:,Feature:,Version:,Reference:,- Scenario:,Scenarios:,-. This check is case-sensitive!"); } @Test diff --git a/src/test/resources/version.zgr b/src/test/resources/version.zgr new file mode 100644 index 0000000..e884e6a --- /dev/null +++ b/src/test/resources/version.zgr @@ -0,0 +1,10 @@ +Feature: Test mit Version +Version: "1.0.0" +Scenarios: + - Scenario: Einfaches Szenario + Given: + - Ein Benutzer + When: + - Benutzer tut etwas + Then: + - Ergebnis ist korrekt