aboutsummaryrefslogtreecommitdiff
path: root/test/test_shex.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_shex.py')
-rw-r--r--test/test_shex.py36
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()