aboutsummaryrefslogtreecommitdiffstats
path: root/test/graph/ac/test_null.py
diff options
context:
space:
mode:
authorMatthias Baumgartner <dev@igsor.net>2022-12-18 14:21:11 +0100
committerMatthias Baumgartner <dev@igsor.net>2022-12-18 14:21:11 +0100
commit91437ba89d35bf482f3d9671bb99ef2fc69f5985 (patch)
treee9bfe27e5a641c040cfa8fe747a7cbb28091079c /test/graph/ac/test_null.py
parent87e4cd5a4581094f490f79d4f1cf91f51897660f (diff)
parente94368c75468e3e94382b12705e55d396249eaca (diff)
downloadbsfs-91437ba89d35bf482f3d9671bb99ef2fc69f5985.tar.gz
bsfs-91437ba89d35bf482f3d9671bb99ef2fc69f5985.tar.bz2
bsfs-91437ba89d35bf482f3d9671bb99ef2fc69f5985.zip
Merge branch 'develop' into main
Diffstat (limited to 'test/graph/ac/test_null.py')
-rw-r--r--test/graph/ac/test_null.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/test/graph/ac/test_null.py b/test/graph/ac/test_null.py
new file mode 100644
index 0000000..f39c9be
--- /dev/null
+++ b/test/graph/ac/test_null.py
@@ -0,0 +1,102 @@
+"""
+
+Part of the bsfs test suite.
+A copy of the license is provided with the project.
+Author: Matthias Baumgartner, 2022
+"""
+# imports
+import unittest
+
+# bsie imports
+from bsfs import schema as _schema
+from bsfs.namespace import ns
+from bsfs.triple_store import SparqlStore
+from bsfs.utils import URI
+
+# objects to test
+from bsfs.graph.ac.null import NullAC
+
+
+## code ##
+
+class TestNullAC(unittest.TestCase):
+ def setUp(self):
+ self.backend = SparqlStore()
+ self.backend.schema = _schema.Schema.from_string('''
+ prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
+ prefix xsd: <http://www.w3.org/2001/XMLSchema#>
+
+ prefix bsfs: <http://bsfs.ai/schema/>
+ prefix bsm: <http://bsfs.ai/schema/Meta#>
+ prefix bse: <http://bsfs.ai/schema/Entity#>
+
+ bsfs:Entity rdfs:subClassOf bsfs:Node .
+ bsfs:Tag rdfs:subClassOf bsfs:Node .
+ xsd:string rdfs:subClassOf bsfs:Literal .
+ xsd:integer rdfs:subClassOf bsfs:Literal .
+
+ # predicates mandated by Nodes
+ bsm:t_created rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsfs:Node ;
+ rdfs:range xsd:integer ;
+ bsfs:unique "true"^^xsd:boolean .
+
+ # additionally defined predicates
+ bse:tag rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsfs:Entity ;
+ rdfs:range bsfs:Tag ;
+ bsfs:unique "false"^^xsd:boolean .
+
+ bse:author rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsfs:Entity ;
+ rdfs:range xsd:string ;
+ bsfs:unique "true"^^xsd:boolean .
+
+ bse:filesize rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsfs:Entity ;
+ rdfs:range xsd:integer ;
+ bsfs:unique "false"^^xsd:boolean .
+
+ ''')
+ self.user = URI('http://www.example.com/me')
+ self.p_author = self.backend.schema.predicate(ns.bse.author)
+ self.p_filesize = self.backend.schema.predicate(ns.bse.filesize)
+ self.p_tag = self.backend.schema.predicate(ns.bse.tag)
+ self.p_created = self.backend.schema.predicate(ns.bsm.t_created)
+ self.ent_type = self.backend.schema.node(ns.bsfs.Entity)
+ self.ent_ids = {URI('http://www.example.com/me/entity#1234'), URI('http://www.example.com/me/entity#4321')}
+
+ def test_is_protected_predicate(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertTrue(ac.is_protected_predicate(self.p_created))
+ self.assertFalse(ac.is_protected_predicate(self.p_filesize))
+ self.assertFalse(ac.is_protected_predicate(self.p_author))
+ self.assertFalse(ac.is_protected_predicate(self.p_tag))
+
+ def test_create(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertEqual(None, ac.create(self.ent_type, self.ent_ids))
+
+ def test_link_from_node(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertSetEqual(self.ent_ids, ac.link_from_node(self.ent_type, self.ent_ids))
+
+ def test_link_to_node(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertSetEqual(self.ent_ids, ac.link_to_node(self.ent_type, self.ent_ids))
+
+ def test_write_literal(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertSetEqual(self.ent_ids, ac.write_literal(self.ent_type, self.ent_ids))
+
+ def test_createable(self):
+ ac = NullAC(self.backend, self.user)
+ self.assertSetEqual(self.ent_ids, ac.createable(self.ent_type, self.ent_ids))
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##