|
@@ -1869,7 +1869,89 @@ class TestModelverse(unittest.TestCase):
|
|
|
|
|
|
# No write permissions, but can query
|
|
|
assert connections_between("formalisms/SimpleClassDiagrams", "Association", "Association") == set(["Association", "Inheritance"])
|
|
|
-
|
|
|
+
|
|
|
+ def test_op_define_attribute(self):
|
|
|
+ model_add("users/user/test/a", "formalisms/SimpleClassDiagrams", """
|
|
|
+ SimpleAttribute String {}
|
|
|
+ SimpleAttribute Natural {}
|
|
|
+ Class A {}
|
|
|
+ Class B {}
|
|
|
+ Association C (A, B) {}
|
|
|
+ Association D (C, A) {}
|
|
|
+ """)
|
|
|
+ assert read_defined_attrs("users/user/test/a", "A") == ({}, {})
|
|
|
+
|
|
|
+ # Test normal operation
|
|
|
+ define_attribute("users/user/test/a", "A", "my_attr", "String")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String"}, {})
|
|
|
+
|
|
|
+ # Test second attribute of same type
|
|
|
+ define_attribute("users/user/test/a", "A", "my_second_attr", "String")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String", "my_second_attr": "String"}, {})
|
|
|
+
|
|
|
+ # Test third attribute with different type
|
|
|
+ define_attribute("users/user/test/a", "A", "a_third_one", "Natural")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "A") == ({"my_attr": "String", "my_second_attr": "String", "a_third_one": "Natural"}, {})
|
|
|
+
|
|
|
+ # Test same on associations
|
|
|
+ define_attribute("users/user/test/a", "C", "my_attr", "String")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String"}, {})
|
|
|
+
|
|
|
+ # Test second attribute of same type
|
|
|
+ define_attribute("users/user/test/a", "C", "my_second_attr", "String")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String", "my_second_attr": "String"}, {})
|
|
|
+
|
|
|
+ # Test third attribute with different type
|
|
|
+ define_attribute("users/user/test/a", "C", "a_third_one", "Natural")
|
|
|
+ assert read_defined_attrs("users/user/test/a", "C") == ({"my_attr": "String", "my_second_attr": "String", "a_third_one": "Natural"}, {})
|
|
|
+
|
|
|
+ # Non-existing model
|
|
|
+ try:
|
|
|
+ define_attribute("users/afa", "A", "B", "C")
|
|
|
+ self.fail()
|
|
|
+ except UnknownModel:
|
|
|
+ pass
|
|
|
+
|
|
|
+ # Non-existing element (1)
|
|
|
+ before = element_list("users/user/test/a")
|
|
|
+ try:
|
|
|
+ define_attribute("users/user/test/a", "AA", "B", "Natural")
|
|
|
+ self.fail()
|
|
|
+ except UnknownElement:
|
|
|
+ assert element_list("users/user/test/a") == before
|
|
|
+
|
|
|
+ # Non-existing element (2)
|
|
|
+ before = element_list("users/user/test/a")
|
|
|
+ try:
|
|
|
+ define_attribute("users/user/test/a", "A", "B", "Natural2")
|
|
|
+ self.fail()
|
|
|
+ except UnknownElement:
|
|
|
+ assert element_list("users/user/test/a") == before
|
|
|
+
|
|
|
+ # Attribute exists
|
|
|
+ before = element_list("users/user/test/a")
|
|
|
+ try:
|
|
|
+ define_attribute("users/user/test/a", "A", "my_attr", "Natural")
|
|
|
+ self.fail()
|
|
|
+ except AttributeExists:
|
|
|
+ assert element_list("users/user/test/a") == before
|
|
|
+
|
|
|
+ # No read permissions
|
|
|
+ before = element_list("users/user/test/a")
|
|
|
+ try:
|
|
|
+ define_attribute("administration/core", "formalisms", "name", "A")
|
|
|
+ self.fail()
|
|
|
+ except ReadPermissionDenied:
|
|
|
+ assert element_list("users/user/test/a") == before
|
|
|
+
|
|
|
+ # No write permissions
|
|
|
+ before = element_list("users/user/test/a")
|
|
|
+ try:
|
|
|
+ define_attribute("formalisms/SimpleClassDiagrams", "Association", "new_name", "String")
|
|
|
+ self.fail()
|
|
|
+ except WritePermissionDenied:
|
|
|
+ assert element_list("users/user/test/a") == before
|
|
|
+
|
|
|
"""
|
|
|
def test_op_model_render(self):
|
|
|
def test_op_transformation_between(self):
|
|
@@ -1890,9 +1972,10 @@ class TestModelverse(unittest.TestCase):
|
|
|
def test_op_group_join(self):
|
|
|
def test_op_group_kick(self):
|
|
|
def test_op_group_list(self):
|
|
|
+ def test_op_undefine_attribute(self):
|
|
|
+ def test_op_read_defined_attrs(self):
|
|
|
def test_op_conformance_delete(self):
|
|
|
def test_op_conformance_add(self):
|
|
|
- def test_op_define_attribute(self):
|
|
|
"""
|
|
|
|
|
|
def test_modelling(self):
|