From 1ac508bde61afa93b48306bd53e304d5b8edfe2f Mon Sep 17 00:00:00 2001
From: Conrad Rosenbrock <crosenbrock@medic.life>
Date: Sat, 22 Jul 2017 11:45:34 -0600
Subject: [PATCH] Addresses #61 for properties with cardinality set.

---
 goblin/abc.py            | 8 ++++++--
 tests/test_properties.py | 5 ++++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/goblin/abc.py b/goblin/abc.py
index a6a20de..cc24c9c 100644
--- a/goblin/abc.py
+++ b/goblin/abc.py
@@ -57,6 +57,7 @@ class DataType(abc.ABC):
         return val
 
     def validate_vertex_prop(self, val, card, vertex_prop, data_type):
+        from .element import VertexProperty
         if card == Cardinality.list_:
             if isinstance(val, list):
                 val = val
@@ -80,8 +81,11 @@ class DataType(abc.ABC):
                 val = set([val])
             vertex_props = set([])
             for v in val:
-                vp = vertex_prop(data_type, card=card)
-                vp.value = self.validate(v)
+                if not isinstance(v, VertexProperty):
+                    vp = vertex_prop(data_type, card=card)
+                    vp.value = self.validate(v)
+                else:
+                    vp = v
                 vertex_props.add(vp)
             val = manager.SetVertexPropertyManager(
                 data_type, vertex_prop, card, vertex_props)
diff --git a/tests/test_properties.py b/tests/test_properties.py
index 10d546a..bb7a620 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -141,7 +141,10 @@ def test_set_change_set_card_vertex_property(place):
     with pytest.raises(exception.ValidationError):
         place.important_numbers.add('dude')
 
-
+def test_set_card_union(place):
+    place.important_numbers = set([1, 2, 3])
+    place.important_numbers = place.important_numbers.union({3, 4, 5})
+        
 def test_set_card_validation_vertex_property(place):
     with pytest.raises(exception.ValidationError):
         place.important_numbers = set(['hello', 2, 3])
-- 
GitLab