浏览代码

Add test for delete_element

Yentl Van Tendeloo 7 年之前
父节点
当前提交
3809d6caae
共有 1 个文件被更改,包括 76 次插入1 次删除
  1. 76 1
      unit/test_all.py

+ 76 - 1
unit/test_all.py

@@ -1426,6 +1426,82 @@ class TestModelverse(unittest.TestCase):
         except ElementExists:
             assert element_list("users/user/test/a") == before
 
+    def test_op_delete_element(self):
+        model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
+            Class A {}
+            """)
+
+        # Test simple delete
+        assert len(element_list_nice("users/user/test/a")) == 1
+        assert delete_element("users/user/test/a", "A") == None
+        assert len(element_list_nice("users/user/test/a")) == 0
+
+        model_add("users/user/test/b", "formalisms/SimpleClassDiagrams", """
+            Class A {}
+            Class B {}
+            Association (A, B) {}
+            """)
+
+        # Test delete of element that causes other elements to be deleted as well
+        assert len(element_list_nice("users/user/test/b")) == 3
+        assert delete_element("users/user/test/b", "A") == None
+        assert len(element_list_nice("users/user/test/b")) == 1
+
+        model_add("users/user/test/c", "formalisms/SimpleClassDiagrams", """
+            Class A {}
+            Class B {}
+            Association C (A, B) {}
+            """)
+
+        # Test delete of edge that causes other elements to be deleted as well
+        assert len(element_list_nice("users/user/test/c")) == 3
+        assert delete_element("users/user/test/c", "C") == None
+        assert len(element_list_nice("users/user/test/c")) == 2
+
+        model_add("users/user/test/d", "formalisms/SimpleClassDiagrams", """
+            Class A {
+                name = "A"
+            }
+            """)
+
+        """
+        # Test delete of a "hidden" element
+        assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": "A", "abstract": None}]
+        ID = [i for i in element_list("users/user/test/d") if i[1] == "Class_name"][0]
+        assert delete_element("users/user/test/d", ID) == None
+        assert element_list_nice("users/user/test/d") == [{"__type" : "Class", "__id": "A", "lower_cardinality": None, "upper_cardinality": None, "constraint": {"AL": ""}, "name": None, "abstract": None}]
+        """
+
+        # Non-existing model
+        try:
+            delete_element("users/afa", "Association")
+            self.fail()
+        except UnknownModel:
+            pass
+
+        # Non-existing element
+        before = element_list("users/user/test/a")
+        try:
+            delete_element("users/user/test/a", "AAAAAAA")
+            self.fail()
+        except UnknownElement:
+            assert element_list("users/user/test/a") == before
+
+        # No read permissions
+        try:
+            delete_element("administration/core", "formalisms")
+            self.fail()
+        except ReadPermissionDenied:
+            pass
+
+        # No write permissions
+        before = element_list("formalisms/SimpleClassDiagrams")
+        try:
+            delete_element("formalisms/SimpleClassDiagrams", "Class")
+            self.fail()
+        except WritePermissionDenied:
+            assert element_list("formalisms/SimpleClassDiagrams") == before
+
     """
     def test_op_model_render(self):
     def test_op_transformation_between(self):
@@ -1448,7 +1524,6 @@ class TestModelverse(unittest.TestCase):
     def test_op_group_list(self):
     def test_op_conformance_delete(self):
     def test_op_conformance_add(self):
-    def test_op_delete_element(self):
     def test_op_AL_text(self):
     def test_op_read_outgoing(self):
     def test_op_read_incoming(self):