18574: Adds tests for value list conversions.
authorLucas Di Pentima <lucas.dipentima@curii.com>
Tue, 1 Mar 2022 22:36:10 +0000 (19:36 -0300)
committerLucas Di Pentima <lucas.dipentima@curii.com>
Tue, 1 Mar 2022 22:36:10 +0000 (19:36 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>

sdk/python/tests/test_vocabulary.py

index 003bd320923f3d69488cd96b0577bba1e2f9a4c3..1d20777823a285bb65bb9bfec2c41f9a0ac52923 100644 (file)
@@ -147,6 +147,20 @@ class VocabularyTest(unittest.TestCase):
                 "failing test case: {}".format(case)
             )
 
+    def test_convert_to_identifiers_value_lists(self):
+        cases = [
+            {'IDTAGIMPORTANCES': ['IDVALIMPORTANCE1', 'IDVALIMPORTANCE2']},
+            {'IDTAGIMPORTANCES': ['High', 'Medium']},
+            {'importance': ['IDVALIMPORTANCE1', 'IDVALIMPORTANCE2']},
+            {'priority': ['high', 'medium']},
+        ]
+        for case in cases:
+            self.assertEqual(
+                self.voc.convert_to_identifiers(case),
+                {'IDTAGIMPORTANCES': ['IDVALIMPORTANCE1', 'IDVALIMPORTANCE2']},
+                "failing test case: {}".format(case)
+            )
+
     def test_convert_to_identifiers_unknown_key(self):
         # Non-strict vocabulary
         self.assertEqual(self.voc.strict_keys, False)
@@ -194,11 +208,19 @@ class VocabularyTest(unittest.TestCase):
                 "failing test case: {}".format(case)
             )
 
-    def test_convert_roundtrip(self):
-        initial = {'IDTAGIMPORTANCES': 'IDVALIMPORTANCE1', 'IDTAGANIMALS': 'IDVALANIMAL1', 'IDTAGCOMMENTS': 'Very important person'}
-        converted = self.voc.convert_to_labels(initial)
-        self.assertNotEqual(converted, initial)
-        self.assertEqual(self.voc.convert_to_identifiers(converted), initial)
+    def test_convert_to_labels_value_lists(self):
+        cases = [
+            {'IDTAGIMPORTANCES': ['IDVALIMPORTANCE1', 'IDVALIMPORTANCE2']},
+            {'IDTAGIMPORTANCES': ['High', 'Medium']},
+            {'importance': ['IDVALIMPORTANCE1', 'IDVALIMPORTANCE2']},
+            {'priority': ['high', 'medium']},
+        ]
+        for case in cases:
+            self.assertEqual(
+                self.voc.convert_to_labels(case),
+                {'Importance': ['High', 'Medium']},
+                "failing test case: {}".format(case)
+            )
 
     def test_convert_to_labels_unknown_key(self):
         # Non-strict vocabulary
@@ -217,4 +239,10 @@ class VocabularyTest(unittest.TestCase):
         # Strict key
         self.assertEqual(self.voc['priority'].strict, True)
         with self.assertRaises(ValueError):
-            self.voc.convert_to_labels({'IDTAGIMPORTANCES': 'foo'})
\ No newline at end of file
+            self.voc.convert_to_labels({'IDTAGIMPORTANCES': 'foo'})
+
+    def test_convert_roundtrip(self):
+        initial = {'IDTAGIMPORTANCES': 'IDVALIMPORTANCE1', 'IDTAGANIMALS': 'IDVALANIMAL1', 'IDTAGCOMMENTS': 'Very important person'}
+        converted = self.voc.convert_to_labels(initial)
+        self.assertNotEqual(converted, initial)
+        self.assertEqual(self.voc.convert_to_identifiers(converted), initial)