diff --git a/src/main/java/de/kosit/validationtool/impl/Scenario.java b/src/main/java/de/kosit/validationtool/impl/Scenario.java index 23deb7d..fc09350 100644 --- a/src/main/java/de/kosit/validationtool/impl/Scenario.java +++ b/src/main/java/de/kosit/validationtool/impl/Scenario.java @@ -16,7 +16,7 @@ package de.kosit.validationtool.impl; -import java.util.Collections; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -80,7 +80,7 @@ public class Scenario { private Transformation reportTransformation; public List getSchematronValidations() { - return this.schematronValidations == null ? Collections.emptyList() : this.schematronValidations; + return this.schematronValidations == null ? new ArrayList<>() : this.schematronValidations; } public String getName() { diff --git a/src/test/java/de/kosit/validationtool/config/ScenarioBuilderTest.java b/src/test/java/de/kosit/validationtool/config/ScenarioBuilderTest.java index 42f2f58..8225224 100644 --- a/src/test/java/de/kosit/validationtool/config/ScenarioBuilderTest.java +++ b/src/test/java/de/kosit/validationtool/config/ScenarioBuilderTest.java @@ -140,6 +140,25 @@ public class ScenarioBuilderTest { assertThat(configuration.getNamespace()).isEmpty(); } + @Test + public void testConfigureWithSchematron() { + final ContentRepository repository = Simple.createContentRepository(); + final XPathExecutable match = repository.createXPath("//*", null); + final XPathExecutable accept = repository.createXPath("//*", null); + final ScenarioBuilder builder = createScenario(); + builder.getNamespaces().clear(); + + builder.match(match); + builder.acceptWith(accept); + final Result result = builder.build(repository); + assertThat(result.isValid()).isTrue(); + final ScenarioType configuration = result.getObject().getConfiguration(); + assertThat(configuration.getMatch()).isNotEmpty(); + assertThat(configuration.getAcceptMatch()).isNotEmpty(); + assertThat(configuration.getNamespace()).isEmpty(); + assertThat(configuration.getValidateWithSchematron()).isNotEmpty(); + } + @Test public void testBasicAttributes() { final ContentRepository repository = Simple.createContentRepository(); diff --git a/src/test/java/de/kosit/validationtool/config/TestConfigurationFactory.java b/src/test/java/de/kosit/validationtool/config/TestConfigurationFactory.java index 79ec407..0daacf7 100644 --- a/src/test/java/de/kosit/validationtool/config/TestConfigurationFactory.java +++ b/src/test/java/de/kosit/validationtool/config/TestConfigurationFactory.java @@ -20,6 +20,7 @@ import static de.kosit.validationtool.config.ConfigurationBuilder.fallback; import static de.kosit.validationtool.config.ConfigurationBuilder.report; import static de.kosit.validationtool.config.ConfigurationBuilder.scenario; import static de.kosit.validationtool.config.ConfigurationBuilder.schema; +import static de.kosit.validationtool.config.ConfigurationBuilder.schematron; import java.net.URI; import java.util.Date; @@ -46,6 +47,7 @@ public class TestConfigurationFactory { public static ScenarioBuilder createScenario() { return scenario("simple").validate(schema("Sample Schema").schemaLocation(URI.create("simple.xsd"))) + .validate(schematron("Sample Schematron").source(Simple.SCHEMATRON)) .with(report("Report für eRechnung").source("report.xsl")).acceptWith("count(//test:rejected) = 0") .declareNamespace("cri", "http://www.xoev.de/de/validator/framework/1/createreportinput") .declareNamespace("rpt", "http://validator.kosit.de/test-report") diff --git a/src/test/java/de/kosit/validationtool/impl/Helper.java b/src/test/java/de/kosit/validationtool/impl/Helper.java index 334791c..635dd2b 100644 --- a/src/test/java/de/kosit/validationtool/impl/Helper.java +++ b/src/test/java/de/kosit/validationtool/impl/Helper.java @@ -84,6 +84,8 @@ public class Helper { public static final URI SCHEMA = REPOSITORY_URI.resolve("simple.xsd"); + public static final URI SCHEMATRON = REPOSITORY_URI.resolve("simple-schematron-error.xsl"); + public static final ContentRepository createContentRepository() { final ResolvingConfigurationStrategy strategy = ResolvingMode.STRICT_RELATIVE.getStrategy(); return new ContentRepository(Helper.getTestProcessor(), strategy, Simple.REPOSITORY_URI);