コード例 #1
0
 def test_defaults(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     assert mp_attr.repr_name == rc_attr.entity_attr
     with pytest.raises(AttributeError):
         getattr(mp_attr, 'foo')
     assert str(mp_attr).startswith(mp_attr.attr_type.__name__)
コード例 #2
0
ファイル: test_representers.py プロジェクト: helixyte/everest
 def test_defaults(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     assert mp_attr.repr_name == rc_attr.entity_attr
     with pytest.raises(AttributeError):
         getattr(mp_attr, 'foo')
     assert str(mp_attr).startswith(mp_attr.attr_type.__name__)
コード例 #3
0
ファイル: session.py プロジェクト: papagr/everest
 def visit(self, key, attribute_options):
     # We only collect load options for attributes which are explicitly not
     # ignored or member attributes unless they are explicitly ignored.
     ignore_opt = attribute_options.get(IGNORE_OPTION)
     if not ignore_opt is True:
         rc = get_member_class(self._context)
         entity_attr_names = []
         store_key = True
         for idx, attr_name in enumerate(key):
             attr = get_resource_class_attribute(rc, attr_name)
             if attr is None:
                 # Referencing non-existing attribute; ignore.
                 store_key = False
                 break
             elif idx == 0 \
                  and is_collection_attribute(attr) \
                  and not ignore_opt is False:
                 # Referencing collection attribute which was not
                 # explicitly enabled.
                 store_key = False
                 break
             entity_attr_name = attr.entity_attr
             if is_terminal_attribute(attr):
                 if '.' in entity_attr_name:
                     entity_attr_name = \
                         entity_attr_name[:entity_attr_name.rfind('.')]
                 else:
                     store_key = False
                     break
             entity_attr_names.append(entity_attr_name)
             rc = attr.attr_type
         if store_key:
             self.__attr_map[key] = entity_attr_names
コード例 #4
0
ファイル: test_descriptors.py プロジェクト: papagr/everest
    def test_inheritance(self):
        class MyEntityDerivedMember(MyEntityMember):
            text = terminal_attribute(int, 'text')

        attr = get_resource_class_attribute(MyEntityDerivedMember, 'text')
        self.assert_equal(attr.kind, RESOURCE_ATTRIBUTE_KINDS.TERMINAL)
        self.assert_equal(attr.entity_attr, 'text')
        self.assert_equal(attr.attr_type, int)
コード例 #5
0
ファイル: test_descriptors.py プロジェクト: b8va/everest
 def test_inheritance(self):
     class MyEntityDerivedMember(MyEntityMember):
         text = terminal_attribute(int, 'text')
     attr = get_resource_class_attribute(MyEntityDerivedMember, 'text')
     self.assert_equal(attr.kind,
                       RESOURCE_ATTRIBUTE_KINDS.TERMINAL)
     self.assert_equal(attr.entity_attr, 'text')
     self.assert_equal(attr.attr_type, int)
コード例 #6
0
ファイル: test_dataelements.py プロジェクト: b8va/everest
 def test_printing_with_none_value(self):
     data_el = SimpleMemberDataElement.create()
     self.assert_equal(list(data_el.terminals.keys()), [])
     rc_attr = get_resource_class_attribute(MyEntityMember, 'text')
     mp_attr = MappedAttribute(rc_attr)
     data_el.set_terminal(mp_attr, None) # Need one None attr value.
     prt_str = str(data_el)
     self.assert_true(prt_str.startswith(data_el.__class__.__name__))
     self.assert_true(prt_str.endswith(')'))
コード例 #7
0
 def test_printing_with_none_value(self):
     data_el = SimpleMemberDataElement.create()
     assert list(data_el.terminals.keys()) == []
     rc_attr = get_resource_class_attribute(MyEntityMember, 'text')
     mp_attr = MappedAttribute(rc_attr)
     data_el.set_terminal(mp_attr, None)  # Need one None attr value.
     prt_str = str(data_el)
     assert prt_str.startswith(data_el.__class__.__name__)
     assert prt_str.endswith(')')
コード例 #8
0
ファイル: test_dataelements.py プロジェクト: helixyte/everest
 def test_member_data_element(self):
     data_el = SimpleMemberDataElement.create()
     # Test nesteds.
     assert list(data_el.nesteds.keys()) == []
     parent_data_el = SimpleMemberDataElement.create()
     rc_nested_attr = \
         get_resource_class_attribute(MyEntityMember, 'parent')
     mp_nested_attr = MappedAttribute(rc_nested_attr)
     data_el.set_nested(mp_nested_attr, parent_data_el)
     assert data_el.get_nested(mp_nested_attr) is parent_data_el
     assert list(data_el.nesteds.keys()) == ['parent']
     # Test terminals.
     assert list(data_el.terminals.keys()) == []
     utc = timezone('UTC')
     ldt = datetime.datetime(2012, 8, 29, 16, 20, 0, tzinfo=utc)
     term_attr_data = OrderedDict(text='foo',
                                  number=0,
                                  date_time=ldt)
     for term_attr_name, term_attr_value in term_attr_data.items():
         rc_attr = get_resource_class_attribute(MyEntityMember,
                                                term_attr_name)
         mp_attr = MappedAttribute(rc_attr)
         # Check setting to None value.
         data_el.set_terminal(mp_attr, None)
         assert data_el.get_terminal(mp_attr) is None
         data_el.set_terminal_converted(mp_attr, None)
         assert data_el.get_terminal(mp_attr) is None
         # Check setting to value.
         data_el.set_terminal(mp_attr, term_attr_value)
         assert data_el.get_terminal(mp_attr) == term_attr_value
         rpr_val = data_el.get_terminal_converted(mp_attr)
         data_el.set_terminal_converted(mp_attr, rpr_val)
         assert data_el.get_terminal(mp_attr) == term_attr_value
     assert list(data_el.terminals.keys()) == list(term_attr_data.keys())
     # Printing.
     prt_str = str(data_el)
     assert prt_str.startswith(data_el.__class__.__name__)
     assert prt_str.endswith(')')
     # Attribute iteration.
     for attr_name, attr_value in iteritems_(term_attr_data):
         assert data_el.get_attribute(attr_name) == attr_value
     for de_attr_name, de_attr_value in data_el.iterator():
         if de_attr_name in term_attr_data:
             assert de_attr_value == term_attr_data[de_attr_name]
コード例 #9
0
 def test_clone(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     mp_attr_clone = mp_attr.clone()
     self.assert_equal(mp_attr.options, mp_attr_clone.options)
     self.assert_equal(mp_attr.name, mp_attr_clone.name)
     self.assert_equal(mp_attr.kind, mp_attr_clone.kind)
     self.assert_equal(mp_attr.value_type, mp_attr_clone.value_type)
     self.assert_equal(mp_attr.entity_name, mp_attr_clone.entity_name)
     self.assert_equal(mp_attr.cardinality, mp_attr_clone.cardinality)
コード例 #10
0
ファイル: test_representers.py プロジェクト: helixyte/everest
 def test_clone(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     mp_attr_clone = mp_attr.clone()
     assert mp_attr.options == mp_attr_clone.options
     assert mp_attr.name == mp_attr_clone.name
     assert mp_attr.kind == mp_attr_clone.kind
     assert mp_attr.value_type == mp_attr_clone.value_type
     assert mp_attr.entity_name == mp_attr_clone.entity_name
     assert mp_attr.cardinality == mp_attr_clone.cardinality
コード例 #11
0
 def test_clone(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     mp_attr_clone = mp_attr.clone()
     assert mp_attr.options == mp_attr_clone.options
     assert mp_attr.name == mp_attr_clone.name
     assert mp_attr.kind == mp_attr_clone.kind
     assert mp_attr.value_type == mp_attr_clone.value_type
     assert mp_attr.entity_name == mp_attr_clone.entity_name
     assert mp_attr.cardinality == mp_attr_clone.cardinality
コード例 #12
0
 def test_member_data_element(self):
     data_el = SimpleMemberDataElement.create()
     # Test nesteds.
     assert list(data_el.nesteds.keys()) == []
     parent_data_el = SimpleMemberDataElement.create()
     rc_nested_attr = \
         get_resource_class_attribute(MyEntityMember, 'parent')
     mp_nested_attr = MappedAttribute(rc_nested_attr)
     data_el.set_nested(mp_nested_attr, parent_data_el)
     assert data_el.get_nested(mp_nested_attr) is parent_data_el
     assert list(data_el.nesteds.keys()) == ['parent']
     # Test terminals.
     assert list(data_el.terminals.keys()) == []
     utc = timezone('UTC')
     ldt = datetime.datetime(2012, 8, 29, 16, 20, 0, tzinfo=utc)
     term_attr_data = OrderedDict(text='foo', number=0, date_time=ldt)
     for term_attr_name, term_attr_value in term_attr_data.items():
         rc_attr = get_resource_class_attribute(MyEntityMember,
                                                term_attr_name)
         mp_attr = MappedAttribute(rc_attr)
         # Check setting to None value.
         data_el.set_terminal(mp_attr, None)
         assert data_el.get_terminal(mp_attr) is None
         data_el.set_terminal_converted(mp_attr, None)
         assert data_el.get_terminal(mp_attr) is None
         # Check setting to value.
         data_el.set_terminal(mp_attr, term_attr_value)
         assert data_el.get_terminal(mp_attr) == term_attr_value
         rpr_val = data_el.get_terminal_converted(mp_attr)
         data_el.set_terminal_converted(mp_attr, rpr_val)
         assert data_el.get_terminal(mp_attr) == term_attr_value
     assert list(data_el.terminals.keys()) == list(term_attr_data.keys())
     # Printing.
     prt_str = str(data_el)
     assert prt_str.startswith(data_el.__class__.__name__)
     assert prt_str.endswith(')')
     # Attribute iteration.
     for attr_name, attr_value in iteritems_(term_attr_data):
         assert data_el.get_attribute(attr_name) == attr_value
     for de_attr_name, de_attr_value in data_el.iterator():
         if de_attr_name in term_attr_data:
             assert de_attr_value == term_attr_data[de_attr_name]
コード例 #13
0
ファイル: test_dataelements.py プロジェクト: b8va/everest
 def test_member_data_element(self):
     data_el = SimpleMemberDataElement.create()
     # Test nesteds.
     self.assert_equal(list(data_el.nesteds.keys()), [])
     parent_data_el = SimpleMemberDataElement.create()
     rc_nested_attr = \
         get_resource_class_attribute(MyEntityMember, 'parent')
     mp_nested_attr = MappedAttribute(rc_nested_attr)
     data_el.set_nested(mp_nested_attr, parent_data_el)
     self.assert_true(data_el.get_nested(mp_nested_attr) is parent_data_el)
     self.assert_equal(list(data_el.nesteds.keys()), ['parent'])
     # Test terminals.
     self.assert_equal(list(data_el.terminals.keys()), [])
     utc = timezone('UTC')
     ldt = datetime.datetime(2012, 8, 29, 16, 20, 0, tzinfo=utc)
     term_attr_data = OrderedDict(text='foo',
                                  number=0,
                                  date_time=ldt)
     for term_attr_name, term_attr_value in term_attr_data.items():
         rc_attr = get_resource_class_attribute(MyEntityMember,
                                                term_attr_name)
         mp_attr = MappedAttribute(rc_attr)
         # Check setting to None value.
         data_el.set_terminal(mp_attr, None)
         self.assert_true(data_el.get_terminal(mp_attr) is None)
         data_el.set_terminal_converted(mp_attr, None)
         self.assert_true(data_el.get_terminal(mp_attr) is None)
         # Check setting to value.
         data_el.set_terminal(mp_attr, term_attr_value)
         self.assert_equal(data_el.get_terminal(mp_attr), term_attr_value)
         rpr_val = data_el.get_terminal_converted(mp_attr)
         data_el.set_terminal_converted(mp_attr, rpr_val)
         self.assert_equal(data_el.get_terminal(mp_attr), term_attr_value)
     self.assert_equal(list(data_el.terminals.keys()),
                       list(term_attr_data.keys()))
     # Printing.
     prt_str = str(data_el)
     self.assert_true(prt_str.startswith(data_el.__class__.__name__))
     self.assert_true(prt_str.endswith(')'))
コード例 #14
0
ファイル: test_relationship.py プロジェクト: helixyte/everest
 def test_make_relationship(self):
     ent = MyEntity(id=0)
     coll = get_root_collection(IMyEntity)
     mb = coll.create_member(ent)
     attr = get_resource_class_attribute(IMyEntity, "parent")
     rel = attr.make_relationship(mb)
     self.assert_true(isinstance(rel, ResourceRelationship))
     parent = MyEntityParent(id=0)
     parent_coll = get_root_collection(IMyEntityParent)
     parent_mb = parent_coll.create_member(parent)
     self.assert_true(ent.parent is None)
     rel.add(parent_mb)
     self.assert_true(ent.parent is parent)
     rel.remove(parent_mb)
     self.assert_true(ent.parent is None)
     rel = attr.make_relationship(ent)
     self.assert_true(isinstance(rel, DomainRelationship))
     self.assert_raises(ValueError, attr.make_relationship, None)
コード例 #15
0
ファイル: test_relationship.py プロジェクト: papagr/everest
 def test_make_relationship(self):
     ent = MyEntity(id=0)
     coll = get_root_collection(IMyEntity)
     mb = coll.create_member(ent)
     attr = get_resource_class_attribute(IMyEntity, 'parent')
     rel = attr.make_relationship(mb)
     self.assert_true(isinstance(rel, ResourceRelationship))
     parent = MyEntityParent(id=0)
     parent_coll = get_root_collection(IMyEntityParent)
     parent_mb = parent_coll.create_member(parent)
     self.assert_true(ent.parent is None)
     rel.add(parent_mb)
     self.assert_true(ent.parent is parent)
     rel.remove(parent_mb)
     self.assert_true(ent.parent is None)
     rel = attr.make_relationship(ent)
     self.assert_true(isinstance(rel, DomainRelationship))
     self.assert_raises(ValueError, attr.make_relationship, None)
コード例 #16
0
ファイル: base.py プロジェクト: b8va/everest
 def __convert_to_entity_attr(self, rc_attr_name):
     entity_attr_tokens = []
     rc_class = self.__rc_class
     for rc_attr_token in rc_attr_name.split('.'):
         rc_attr = get_resource_class_attribute(rc_class, rc_attr_token)
         if rc_attr is None:
             raise ValueError('%s resource does not have an attribute '
                              '"%s".' % (rc_class.__name__, rc_attr_name))
         ent_attr_name = rc_attr.entity_attr
         if ent_attr_name is None:
             raise ValueError('Resource attribute "%s" does not have a '
                              'corresponding entity attribute.'
                              % rc_attr.resource_attr)
         if rc_attr.kind != RESOURCE_ATTRIBUTE_KINDS.TERMINAL:
             # Look up the member class for the specified member or
             # collection resource interface.
             rc_class = get_member_class(rc_attr.attr_type)
         entity_attr_tokens.append(ent_attr_name)
     return '.'.join(entity_attr_tokens)
コード例 #17
0
 def __convert_to_entity_attr(self, rc_attr_name):
     entity_attr_tokens = []
     rc_class = self.__rc_class
     for rc_attr_token in rc_attr_name.split('.'):
         rc_attr = get_resource_class_attribute(rc_class, rc_attr_token)
         if rc_attr is None:
             raise AttributeError('%s resource does not have an attribute '
                                  '"%s".' %
                                  (rc_class.__name__, rc_attr_name))
         ent_attr_name = rc_attr.entity_attr
         if ent_attr_name is None:
             raise ValueError('Resource attribute "%s" does not have a '
                              'corresponding entity attribute.' %
                              rc_attr.resource_attr)
         if rc_attr.kind != RESOURCE_ATTRIBUTE_KINDS.TERMINAL:
             # Look up the member class for the specified member or
             # collection resource interface.
             rc_class = get_member_class(rc_attr.attr_type)
         entity_attr_tokens.append(ent_attr_name)
     return '.'.join(entity_attr_tokens)
コード例 #18
0
 def test_ignore(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr,
                               options={IGNORE_OPTION:False})
     self.assert_true(getattr(mp_attr, IGNORE_OPTION) is False)
コード例 #19
0
 def test_defaults(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr)
     self.assert_equal(mp_attr.repr_name, rc_attr.entity_attr)
     self.assert_raises(AttributeError, getattr, mp_attr, 'foo')
     self.assert_true(str(mp_attr).startswith(mp_attr.attr_type.__name__))
コード例 #20
0
 def __getitem__(self, item):
     ident = identifier_from_slug(item)
     attr = get_resource_class_attribute(self.__class__, ident)
     if attr is None or attr.kind == RESOURCE_ATTRIBUTE_KINDS.TERMINAL:
         raise KeyError('%s' % ident)
     return getattr(self, ident)
コード例 #21
0
 def test_ignore(self):
     rc_attr = get_resource_class_attribute(MyEntityMember, 'number')
     mp_attr = MappedAttribute(rc_attr, options={IGNORE_OPTION: False})
     assert getattr(mp_attr, IGNORE_OPTION) is False
コード例 #22
0
ファイル: base.py プロジェクト: helixyte/everest
 def __getitem__(self, item):
     ident = identifier_from_slug(item)
     attr = get_resource_class_attribute(self.__class__, ident)
     if attr is None or attr.kind == RESOURCE_ATTRIBUTE_KINDS.TERMINAL:
         raise KeyError('%s' % ident)
     return getattr(self, ident)
コード例 #23
0
ファイル: base.py プロジェクト: b8va/everest
 def __getitem__(self, item):
     ident = identifier_from_slug(item)
     attr = get_resource_class_attribute(self.__class__, ident)
     if attr is None:
         raise KeyError('%s' % ident)
     return getattr(self, ident)