Add function to list the names for submissions from the RDF model.
[htsworkflow.git] / htsworkflow / submission / test / test_submission.py
diff --git a/htsworkflow/submission/test/test_submission.py b/htsworkflow/submission/test/test_submission.py
new file mode 100644 (file)
index 0000000..f362cea
--- /dev/null
@@ -0,0 +1,68 @@
+import os
+from StringIO import StringIO
+import shutil
+import tempfile
+from unittest2 import TestCase, TestSuite, defaultTestLoader
+
+from htsworkflow.submission import daf, results
+from htsworkflow.util.rdfhelp import \
+     dafTermOntology, \
+     fromTypedNode, \
+     load_string_into_model, \
+     rdfNS, \
+     submissionLog, \
+     submissionOntology, \
+     get_model, \
+     get_serializer
+from htsworkflow.submission.submission import list_submissions
+import RDF
+
+class TestSubmissionModule(TestCase):
+    def test_empty_list_submission(self):
+        model = get_model()
+        self.assertEqual(len(list(list_submissions(model))), 0)
+
+    def test_one_submission(self):
+        model = get_model()
+        load_string_into_model(model, "turtle",
+            """
+            @prefix subns: <http://jumpgate.caltech.edu/wiki/UcscSubmissionOntology#> .
+            @prefix test: <http://jumpgate.caltech.edu/wiki/SubmissionsLog/test#> .
+
+            <http://jumpgate.caltech.edu/wiki/SubmissionsLog/test#>
+               subns:has_submission test:lib1 ;
+               subns:has_submission test:lib2.
+            """)
+        submissions = list(list_submissions(model))
+        self.assertEqual(len(submissions), 1)
+        self.assertEqual(submissions[0], "test")
+
+    def test_two_submission(self):
+        model = get_model()
+        load_string_into_model(model, "turtle",
+            """
+            @prefix subns: <http://jumpgate.caltech.edu/wiki/UcscSubmissionOntology#> .
+            @prefix test: <http://jumpgate.caltech.edu/wiki/SubmissionsLog/test#> .
+
+            <http://jumpgate.caltech.edu/wiki/SubmissionsLog/test1#>
+               subns:has_submission test:lib1 .
+            <http://jumpgate.caltech.edu/wiki/SubmissionsLog/test2#>
+               subns:has_submission test:lib2 .
+            """)
+        submissions = list(list_submissions(model))
+        self.assertEqual(len(submissions), 2)
+        truth = set(["test1", "test2"])
+        testset = set()
+        for name in submissions:
+            testset.add(name)
+        self.assertEqual(testset, truth)
+
+def suite():
+    suite = TestSuite()
+    suite.addTests(
+        defaultTestLoader.loadTestsFromTestCase(TestSubmissionModule))
+    return suite
+
+if __name__ == "__main__":
+    from unittest2 import main
+    main(defaultTest='suite')