diff --git a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractCoreModuleTestHelper.java b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractCoreModuleTestHelper.java new file mode 100644 index 000000000..7712ae2ae --- /dev/null +++ b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractCoreModuleTestHelper.java @@ -0,0 +1,26 @@ +package cz.cvut.spipes.modules; + +import cz.cvut.spipes.engine.PipelineFactory; +import org.apache.jena.ontology.OntModel; + +/** + * This is helper class to write tests that load configuration of modules from ttl file + * that is organized in directory `test/resources/module/${moduleName}/`. + * + * See more information in {@link AbstractModuleTestHelper}. + */ +public abstract class AbstractCoreModuleTestHelper extends AbstractModuleTestHelper { + + @Override + Module getSingleModule(OntModel configModel) { + return PipelineFactory.loadPipelines(configModel).get(0); + } + + public Module getConfigRootModule() { + return (Module) super.getConfigRootModule(); + } + public Module getRootModule(String fileName) { + return (Module) super.getRootModule(fileName); + } + +} diff --git a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTest.java b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTest.java index 7e26b9857..7d2e47d01 100644 --- a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTest.java +++ b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTest.java @@ -12,7 +12,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -public class AbstractModuleTest extends AbstractModuleTestHelper { +public class AbstractModuleTest extends AbstractCoreModuleTestHelper { @Override String getModuleName() { diff --git a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java deleted file mode 100644 index abb29f0e9..000000000 --- a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java +++ /dev/null @@ -1,85 +0,0 @@ -package cz.cvut.spipes.modules; - -import cz.cvut.spipes.engine.PipelineFactory; -import cz.cvut.spipes.test.JenaTestUtils; -import org.apache.jena.ontology.OntModel; -import org.apache.jena.ontology.OntModelSpec; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.util.FileUtils; - -import java.net.URISyntaxException; -import java.nio.file.Path; -import java.nio.file.Paths; - -public abstract class AbstractModuleTestHelper { - - private static final String MODULE_DIR_NAME = "module"; - private static final String CONFIG_FILE_NAME = "config.ttl"; - - - /** - * @return Name of the directory within test resources/modules folder. - */ - abstract String getModuleName(); - - public OntModel getConfigOntModel() { - JenaTestUtils.mapLocalSPipesDefinitionFiles(); - return getOntModel(CONFIG_FILE_NAME); - } - - public OntModel getOntModel(String fileName) { - OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); - - // set external context - //OntDocumentManager dm = OntDocumentManager.getInstance(); - //dm.setFileManager( FileManager.get() ); - //LocationMapper lm= FileManager.get().getLocationMapper(); - //dm.loadImports(ontModel); - - JenaTestUtils.mapLocalSPipesDefinitionFiles(); - - // load config - ontModel.read( - getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); - - return ontModel; - } - - public Model getModel(String fileName) { - Model model = ModelFactory.createDefaultModel(); - - model.read( - getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); - - return model; - } - - - public Module getConfigRootModule() { - return getRootModule(CONFIG_FILE_NAME); - } - - public Module getRootModule(String fileName) { - OntModel configModel = getOntModel(fileName); - - OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); - - ontModel.read( - getClass().getResourceAsStream(getConfigFilePath()), null, FileUtils.langTurtle); - - return PipelineFactory.loadPipelines(configModel).get(0); - } - - public Path getFilePath(String fileName) throws URISyntaxException { - return Paths.get(getClass().getResource(getRelativeFilePath(fileName)).toURI()); - } - - private String getRelativeFilePath(String fileName) { - return "/" + MODULE_DIR_NAME + "/" + getModuleName() + "/" + fileName; - } - - private String getConfigFilePath() { - return "/" + MODULE_DIR_NAME + "/" + getModuleName() + "/" + CONFIG_FILE_NAME; - } -} diff --git a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/ApplyConstructModuleTest.java b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/ApplyConstructModuleTest.java index 2f2cf9a85..a9dddbd0e 100644 --- a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/ApplyConstructModuleTest.java +++ b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/ApplyConstructModuleTest.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Test; -public class ApplyConstructModuleTest extends AbstractModuleTestHelper { +public class ApplyConstructModuleTest extends AbstractCoreModuleTestHelper { @BeforeEach public void setUp() { diff --git a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/BindWithConstantModuleTest.java b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/BindWithConstantModuleTest.java index 860d70f21..6ca745660 100644 --- a/s-pipes-core/src/test/java/cz/cvut/spipes/modules/BindWithConstantModuleTest.java +++ b/s-pipes-core/src/test/java/cz/cvut/spipes/modules/BindWithConstantModuleTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import org.junit.jupiter.api.Test; -public class BindWithConstantModuleTest extends AbstractModuleTestHelper { +public class BindWithConstantModuleTest extends AbstractCoreModuleTestHelper { @Override public String getModuleName() { diff --git a/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java b/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java deleted file mode 100644 index 19bc8ca55..000000000 --- a/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java +++ /dev/null @@ -1,76 +0,0 @@ -package cz.cvut.spipes.modules; - -import cz.cvut.spipes.engine.PipelineFactory; -import cz.cvut.spipes.test.JenaTestUtils; -import org.apache.jena.ontology.OntModel; -import org.apache.jena.ontology.OntModelSpec; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.util.FileUtils; - -import java.net.URISyntaxException; -import java.nio.file.Path; -import java.nio.file.Paths; - -public abstract class AbstractModuleTestHelper { - - private static final String MODULE_DIR_NAME = "module"; - private static final String CONFIG_FILE_NAME = "config.ttl"; - - /** - * @return Name of the directory within test resources/modules folder. - */ - abstract String getModuleName(); - - public OntModel getConfigOntModel() { - JenaTestUtils.mapLocalSPipesDefinitionFiles(); - return getOntModel(CONFIG_FILE_NAME); - } - - public OntModel getOntModel(String fileName) { - OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); - - // load config - ontModel.read( - getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); - - return ontModel; - } - - public Model getModel(String fileName) { - Model model = ModelFactory.createDefaultModel(); - - model.read( - getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); - - return model; - } - - - public Module getConfigRootModule() { - return getRootModule(CONFIG_FILE_NAME); - } - - public Module getRootModule(String fileName) { - OntModel configModel = getOntModel(fileName); - - OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); - - ontModel.read( - getClass().getResourceAsStream(getConfigFilePath()), null, FileUtils.langTurtle); - - return PipelineFactory.loadPipelines(configModel).get(0); - } - - public Path getFilePath(String fileName) throws URISyntaxException { - return Paths.get(getClass().getResource(getRelativeFilePath(fileName)).toURI()); - } - - private String getRelativeFilePath(String fileName) { - return "/" + MODULE_DIR_NAME + "/" + getModuleName() + "/" + fileName; - } - - private String getConfigFilePath() { - return "/" + MODULE_DIR_NAME + "/" + getModuleName() + "/" + CONFIG_FILE_NAME; - } -} diff --git a/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractTabularModuleTestHelper.java b/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractTabularModuleTestHelper.java new file mode 100644 index 000000000..7c6a34330 --- /dev/null +++ b/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/AbstractTabularModuleTestHelper.java @@ -0,0 +1,26 @@ +package cz.cvut.spipes.modules; + +import cz.cvut.spipes.engine.PipelineFactory; +import org.apache.jena.ontology.OntModel; + +/** + * This is helper class to write tests that load configuration of modules from ttl file + * that is organized in directory `test/resources/module/${moduleName}/`. + * + * See more information in {@link AbstractModuleTestHelper}. + */ +public abstract class AbstractTabularModuleTestHelper extends AbstractModuleTestHelper { + + @Override + Module getSingleModule(OntModel configModel) { + return PipelineFactory.loadPipelines(configModel).get(0); + } + + public Module getConfigRootModule() { + return (Module) super.getConfigRootModule(); + } + public Module getRootModule(String fileName) { + return (Module) super.getRootModule(fileName); + } + +} diff --git a/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/TabularModuleTest.java b/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/TabularModuleTest.java index cc59b2b8f..1f7e80d1e 100644 --- a/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/TabularModuleTest.java +++ b/s-pipes-modules/module-tabular/src/test/java/cz/cvut/spipes/modules/TabularModuleTest.java @@ -30,7 +30,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assumptions.assumeTrue; - class TabularModuleTest extends AbstractModuleTestHelper { + class TabularModuleTest extends AbstractTabularModuleTestHelper { private TabularModule module; private final String DATA_PREFIX = "http://onto.fel.cvut.cz/data/"; diff --git a/s-pipes-test/src/main/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java b/s-pipes-test/src/main/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java new file mode 100644 index 000000000..e610b16ac --- /dev/null +++ b/s-pipes-test/src/main/java/cz/cvut/spipes/modules/AbstractModuleTestHelper.java @@ -0,0 +1,144 @@ +package cz.cvut.spipes.modules; + +import cz.cvut.spipes.test.JenaTestUtils; +import org.apache.jena.ontology.OntModel; +import org.apache.jena.ontology.OntModelSpec; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.util.FileUtils; + +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * This is helper class to write tests that load configuration of modules from ttl file + * that is organized in directory `test/resources/module/${moduleName}/`. + * + * The `${moduleName}` is taken from abstract method getModuleName(). + * The configuration file should be located at `test/resources/module/${moduleName}/${fileName}` + * and to load the module one can call method getRootModule(fileName). + * + * ${fileName} (e.g. config.ttl) must contain only one module and must include declaration of the module type. + * Example `./test/module/apply-construct/config.ttl`: + * + *

+ *
+ * @prefix apply-construct:  .
+ * @prefix owl:  .
+ * @prefix sp:  .
+ * @prefix sml:  .
+ *
+ * # Declare module type (alternatively you can import it using owl:imports)
+ * sml:ApplyConstruct a sm:Module .
+ *
+ * # configure the module
+ * apply-construct:create-sample-triples
+ *   a sml:ApplyConstruct ;
+ *   sml:constructQuery [
+ *       a sp:Construct ;
+ *       sp:text """CONSTRUCT {
+ *      rdfs:label "label 1" .
+ *      rdfs:label "label 2" .
+ * }
+ * WHERE {
+ * }""" ;
+ *   ] ;
+ * .
+ *
+ * 
+ *   a owl:Ontology ;
+ *   owl:imports  ;
+ * .
+ *
+ * 
+ * + */ +public abstract class AbstractModuleTestHelper { + + private static final String MODULE_DIR_NAME = "module"; + private static final String CONFIG_FILE_NAME = "config.ttl"; + + + /** + * @return Name of the directory within test resources/modules folder. + */ + abstract String getModuleName(); + + /** + * This method should load single SPipes Module from provided ontology. + * @return First module in ontology + */ + abstract Object getSingleModule(OntModel configModel); + + public OntModel getConfigOntModel() { + return getOntModel(CONFIG_FILE_NAME); + } + + public OntModel getOntModel(String fileName) { + OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); + + // set external context + //OntDocumentManager dm = OntDocumentManager.getInstance(); + //dm.setFileManager( FileManager.get() ); + //LocationMapper lm= FileManager.get().getLocationMapper(); + //dm.loadImports(ontModel); + + JenaTestUtils.mapLocalSPipesDefinitionFiles(); + + // load config + ontModel.read( + getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); + + return ontModel; + } + + public Model getModel(String fileName) { + Model model = ModelFactory.createDefaultModel(); + + model.read( + getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); + + return model; + } + + /** + * Returns module from a default configuration file located are `test/resources/module/${moduleName}/config.ttl`, + * where ${moduleName} is returned by getModuleName(). + * + * @return Returns loaded module. + */ + public Object getConfigRootModule() { + return getRootModule(CONFIG_FILE_NAME); + } + + /** + * Returns module from a provided configuration file. + * + * @param fileName of ttl file (e.g. config.ttl) to load module configuration. + * It should be located at test/resources/module/${fileName}. + * @return Returns loaded module from the given file. + */ + public Object getRootModule(String fileName) { + OntModel configModel = getOntModel(fileName); + + OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); + + ontModel.read( + getClass().getResourceAsStream(getRelativeFilePath(fileName)), null, FileUtils.langTurtle); + + return getSingleModule(configModel); + } + + public Path getFilePath(String fileName) throws URISyntaxException { + return Paths.get(getClass().getResource(getRelativeFilePath(fileName)).toURI()); + } + + private String getRelativeFilePath(String fileName) { + return "/" + MODULE_DIR_NAME + "/" + getModuleName() + "/" + fileName; + } + + private String getConfigFilePath() { + return getRelativeFilePath(CONFIG_FILE_NAME); + } +}