def test___setitem__(self):
        # given:
        node = DataNode()

        # when:
        node['path.to.node'] = 'value'
        node['path.to.nested.field'] = 347

        # then:
        dict = node.as_dict()
        self.assertEqual('value', dict['path']['to']['node'])
        self.assertEqual(347, dict['path']['to']['nested']['field'])
 def __init__(self,
              object_id=None,
              content={},
              links={},
              external_links={},
              linking_details={}):
     self.object_id = object_id
     self._content = DataNode(defaults=copy.deepcopy(content))
     self._links = copy.deepcopy(links)
     self._external_links = copy.deepcopy(external_links)
     self._linking_details = DataNode(
         defaults=copy.deepcopy(linking_details))
Beispiel #3
0
 def create_template_node(self, worksheet: Worksheet):
     concrete_entity = self.get_concrete_type(worksheet.title)
     schema = self._get_schema(concrete_entity)
     data_node = DataNode()
     data_node['describedBy'] = schema['url']
     data_node['schema_type'] = schema['domain_entity']
     return data_node
 def create_template_node(self, worksheet: Worksheet):
     concrete_entity = self.get_concrete_type(worksheet.title)
     schema = self._get_schema(concrete_entity)
     data_node = DataNode()
     data_node[self.default_keys[0]] = schema['url']
     data_node[self.default_keys[1]] = schema['domain_entity']
     return data_node
    def test___getitem___non_existent_path(self):
        # given:
        defaults = {'product': {'name': 'biscuit', 'id': '123'}}
        data_node = DataNode(defaults=defaults)

        # expect:
        # TODO this should probably throw exception instead, indicating path does not exist
        self.assertIsNone(data_node['product.path.does.not.exist'])
        self.assertIsNone(data_node['simply.does.not.exist'])
    def test_remove_field(self):
        # given:
        source = {'description': 'test source', 'count': 101, 'id': 'a3b7880'}
        data_node = DataNode(defaults=source)

        # when:
        data_node.remove_field('count')
        data_node.remove_field('description')

        # then:
        self.assertEqual(['id'], list(data_node.as_dict().keys()))
    def test___getitem__(self):
        # given:
        defaults = {
            'first_name': 'Juan',
            'last_name': 'dela Cruz',
            'age': 39,
            'address': {
                'city': 'Manila',
                'country': 'Philippines'
            }
        }

        # and:
        data_node = DataNode(defaults=defaults)

        # expect:
        self.assertEqual('Juan', data_node['first_name'])
        self.assertEqual(39, data_node['age'])

        # and:
        self.assertEqual('Manila', data_node['address.city'])
        self.assertEqual('Philippines', data_node['address.country'])
class MetadataEntity:
    def __init__(self,
                 object_id=None,
                 content={},
                 links={},
                 external_links={},
                 linking_details={}):
        self.object_id = object_id
        self._content = DataNode(defaults=copy.deepcopy(content))
        self._links = copy.deepcopy(links)
        self._external_links = copy.deepcopy(external_links)
        self._linking_details = DataNode(
            defaults=copy.deepcopy(linking_details))

    @property
    def content(self):
        return copy.deepcopy(self._content)

    def get_content(self, content_property):
        return self._content[content_property]

    def define_content(self, content_property, value):
        self._content[content_property] = value

    def define_linking_detail(self, link_property, value):
        self._linking_details[link_property] = value

    @property
    def linking_details(self):
        return self._linking_details.as_dict()

    def get_linking_detail(self, link_property):
        return self._linking_details[link_property]

    @property
    def links(self):
        return copy.deepcopy(self._links)

    def get_links(self, link_entity_type):
        return self._links.get(link_entity_type)

    def add_links(self, link_entity_type, new_links):
        self._do_add_links(self._links, link_entity_type, new_links)

    @property
    def external_links(self):
        return copy.deepcopy(self._external_links)

    def get_external_links(self, link_entity_type):
        return self._external_links.get(link_entity_type)

    def add_external_links(self, link_entity_type, new_links):
        self._do_add_links(self._external_links, link_entity_type, new_links)

    @staticmethod
    def _do_add_links(link_map, link_entity_type, new_links):
        existent_links = link_map.get(link_entity_type)
        if existent_links is None:
            existent_links = []
            link_map[link_entity_type] = existent_links
        existent_links.extend(new_links)