diff options
Diffstat (limited to 'test/test_shex.py')
-rw-r--r-- | test/test_shex.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/test_shex.py b/test/test_shex.py new file mode 100644 index 0000000..728bfdc --- /dev/null +++ b/test/test_shex.py @@ -0,0 +1,36 @@ +# Run with python3 test/test_shex.py + +import schema_salad.schema +import schema_salad.ref_resolver +import schema_salad.jsonld_context +from pyshex.evaluate import evaluate +import unittest + +class TestShexMethods(unittest.TestCase): + + def test_schema(self): + with open("bh20sequploader/bh20seq-schema.yml") as schema_resource: + metadata_schema = schema_salad.schema.load_schema("bh20sequploader/bh20seq-schema.yml") + (document_loader, + avsc_names, + schema_metadata, + metaschema_loader) = metadata_schema + # print(metadata_schema) + self.assertTrue(isinstance(avsc_names, schema_salad.avro.schema.Names)) + metadatafile = "test/data/input/TN_UT2.yaml" + doc, metadata = schema_salad.schema.load_and_validate(document_loader, avsc_names, metadatafile, True) + print(doc) + g = schema_salad.jsonld_context.makerdf("workflow", doc, document_loader.ctx) + with open("bh20sequploader/bh20seq-shex.rdf") as f: + shex = f.read() + # Note the https link simply acts as a URI descriptor (it does not fetch) + rslt, reason = evaluate(g, shex, doc["id"], "https://raw.githubusercontent.com/arvados/bh20-seq-resource/master/bh20sequploader/bh20seq-shex.rdf#submissionShape") + + with open("test/data/regression/TN_UT2.rdf","w") as f: + f.write(g.serialize(format="ntriples").decode("utf-8")) + + if not rslt: + raise Exception(reason) + +if __name__ == '__main__': + unittest.main() |