1 # Copyright (C) The Arvados Authors. All rights reserved.
3 # SPDX-License-Identifier: Apache-2.0
9 from arvados import api, vocabulary
11 class VocabularyTest(unittest.TestCase):
18 {'label': 'Creature'},
24 {'label': 'Homo sapiens'},
29 {'label': 'Elephant'},
30 {'label': 'Loxodonta'},
38 {'label': 'Importance'},
39 {'label': 'Priority'},
45 {'label': 'High priority'},
51 {'label': 'Medium priority'},
57 {'label': 'Low priority'},
65 def perform_vocabulary_tests(self, voc):
66 self.assertEqual(voc.strict_keys, False)
67 self.assertEqual(voc.key_aliases.keys(), set(['IDTAGANIMALS', 'IDTAGIMPORTANCE']))
69 self.assertEqual(voc.key_aliases['IDTAGANIMALS'].strict, False)
70 self.assertEqual(set(voc.key_aliases['IDTAGANIMALS'].aliases), set(['animal', 'creature']))
71 self.assertEqual(voc.key_aliases['IDTAGANIMALS'].values.keys(), set(['IDVALANIMAL1', 'IDVALANIMAL2']))
72 self.assertEqual(voc.key_aliases['IDTAGANIMALS'].values['IDVALANIMAL1'].aliases, set(['human', 'homo sapiens']))
74 def test_empty_vocabulary(self):
75 voc = vocabulary.Vocabulary()
76 self.assertEqual(voc.strict_keys, False)
77 self.assertEqual(voc.key_aliases, {})
79 def test_load_vocabulary(self):
80 voc = vocabulary.Vocabulary(self.EXAMPLE_VOC)
81 self.perform_vocabulary_tests(voc)
83 @mock.patch('arvados.api')
84 def test_load_vocabulary_with_api(self, api_mock):
85 api_mock.return_value = mock.MagicMock()
86 api_mock.return_value.vocabulary.return_value = self.EXAMPLE_VOC
88 voc = vocabulary.load_vocabulary(arvados.api('v1'))
89 self.perform_vocabulary_tests(voc)