Source code for src.tests.taxonomy

import unittest

from ..config import Config
from ..data_models import Taxonomy
from ..sparql import RequestHandler
from ..utils import LoggingBase


[docs] class TaxonomyTests(unittest.TestCase):
[docs] def setUp(self): self.config = Config() self.logger = LoggingBase(self.config.logging).logger self.request_handler = RequestHandler(config=self.config, logger=self.logger) # Existing decision to verify loading self.child_3 = self.user = Taxonomy( config=self.config.data_models, logger=self.logger, uri="ghent_words/3", label="label3", level=3 ) self.child_2 = self.user = Taxonomy( config=self.config.data_models, logger=self.logger, uri="ghent_words/2", label="label2", level=2, children=[self.child_3] ) self.child_1 = Taxonomy( config=self.config.data_models, logger=self.logger, uri="ghent_words/1", label="label1", level=1, children=[self.child_2] ) self.taxonomy = Taxonomy( config=self.config.data_models, logger=self.logger, uri="ghent_words_master_node", children=[self.child_1] ) self.double_taxonomy = Taxonomy( config=self.config.data_models, logger=self.logger, uri="ghent_words_master_node", children=[self.child_1, self.child_1] )
[docs] def test_taxonomy_uri(self): self.assertEqual(self.taxonomy.uri, "ghent_words_master_node")
[docs] def test_taxonomy_label(self): self.assertEqual(self.taxonomy.label, None, "When label is not provided, none is expected for label default " "value") self.assertEqual(self.taxonomy.children[0].label, "label1", "When label is provided, string return is expected")
[docs] def test_taxonomy_level(self): self.assertEqual(self.taxonomy.level, 0, "When level is not provided, none is expected for level default " "value") self.assertEqual(self.taxonomy.children[0].level, 1, "When level is provided, string return is expected")
[docs] def test_taxonomy_children(self): self.assertTrue(isinstance(self.taxonomy.children, list)) self.assertTrue(isinstance(self.taxonomy.children[0], Taxonomy))
[docs] def test_taxonomy_todict_no_children(self): correct_dict_value = { 'label': None, 'level': 0, 'uri': 'ghent_words_master_node', 'children': [] } self.assertEqual(correct_dict_value, self.taxonomy.todict())
[docs] def test_taxonomy_todict_with_children(self): correct_dict_value = { 'label': None, 'level': 0, 'uri': 'ghent_words_master_node', 'children': [ { 'label': 'label1', 'level': 1, 'uri': 'ghent_words/1', 'children': [ { 'label': 'label2', 'level': 2, 'uri': 'ghent_words/2', 'children': [ { 'children': [], 'label': 'label3', 'level': 3, 'uri': 'ghent_words/3' } ], } ], } ], } self.assertEqual(self.taxonomy.todict(with_children=True), correct_dict_value)
[docs] def test_taxonomy_todict_with_children_and_max_depth(self): # TODO: implement this correct_dict_value = { 'children': [{'children': [], 'label': 'label1', 'level': 1, 'uri': 'ghent_words/1'}], 'label': None, 'level': 0, 'uri': 'ghent_words_master_node' } self.assertEqual(correct_dict_value, self.taxonomy.todict(with_children=True, max_depth=2))
[docs] def test_taxonomy_get_labels(self): correct_labels = ['label1', 'label2', 'label3'] self.assertEqual(self.taxonomy.get_labels(), correct_labels)
[docs] def test_taxonomy_get_labels_with_max_depth(self): correct_labels = ['label1', 'label2'] self.assertEqual(self.taxonomy.get_labels(max_depth=2), correct_labels)
[docs] def test_taxonomy_get_labels_with_max_depth_and_level(self): correct_labels = [('1', 'label1'), ('1.1', 'label2'), ('2', 'label1'), ('2.1', 'label2')] self.assertEqual(correct_labels, self.double_taxonomy.get_labels(max_depth=2, include_tree_indication=True))
[docs] def test_taxonomy_remap_tree(self): pass
[docs] def test_taxonomy_find(self): correct_result = { 1: { 'label': 'label1', 'level': 1, 'uri': 'ghent_words/1', 'children': [] }, 2: { 'label': 'label2', 'level': 2, 'uri': 'ghent_words/2', 'children': [] }, 3: { 'label': 'label3', 'level': 3, 'uri': 'ghent_words/3', 'children': [] } } self.assertEqual(self.taxonomy.find("ghent_words/3"), correct_result)
[docs] def test_taxonomy_find_with_max_depth(self): correct_result = { 1: { 'label': 'label1', 'level': 1, 'uri': 'ghent_words/1', 'children': [] }, 2: { 'label': 'label2', 'level': 2, 'uri': 'ghent_words/2', 'children': [] } } # TODO: fix this! -> for some reason it does not take the max depth param self.assertEqual(correct_result, self.taxonomy.find("ghent_words/2", max_depth=3))
[docs] def test_taxonomy_find_unreachable_with_max_depth(self): correct_result = {} # TODO: fix this! -> for some reason it does not take the max depth param self.assertEqual(correct_result, self.taxonomy.find("ghent_words/3", max_depth=3))
[docs] def test_taxonomy_find_not_exist(self): correct_result = {} # TODO: fix this! -> for some reason it does not take the max depth param self.assertEqual(self.taxonomy.find("ghent_words/20"), correct_result)
[docs] def test_taxonomy_uri2label(self): correct_response = { 'ghent_words/1': 'label1', 'ghent_words/2': 'label2', 'ghent_words/3': 'label3' } self.assertEqual(self.taxonomy.uri2label, correct_response)
[docs] def test_taxonomy_label2uri(self): correct_response = { 'label1': 'ghent_words/1', 'label2': 'ghent_words/2', 'label3': 'ghent_words/3' } self.assertEqual(self.taxonomy.label2uri, correct_response)
[docs] def test_taxonomy_from_dict(self): example_dict = { 'label': None, 'level': 0, 'uri': 'ghent_words_master_node', 'children': [ { 'label': 'label1', 'level': 1, 'uri': 'ghent_words/1', 'children': [ { 'label': 'label2', 'level': 2, 'uri': 'ghent_words/2', 'children': [ { 'children': [], 'label': 'label3', 'level': 3, 'uri': 'ghent_words/3' } ], } ], } ], } taxo = Taxonomy.from_dict( config=self.config.data_models, logger=self.logger, dictionary=example_dict ) self.assertEqual(taxo.todict(with_children=True), example_dict)
[docs] def test_taxonomy_level_specific_labels(self): self.assertEqual(['label1'], self.taxonomy.get_level_specific_labels(level=1)) self.assertEqual(['label2'], self.taxonomy.get_level_specific_labels(level=2))