Example #1
0
 def test_member_data_element(self):
     data_el = SimpleMemberDataElement.create()
     # Test nesteds.
     self.assert_equal(data_el.nesteds.keys(), [])
     parent_data_el = SimpleMemberDataElement.create()
     rc_nested_attr = MyEntityMember.get_attributes()['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(data_el.nesteds.keys(), ['parent'])
     # Test terminals.
     self.assert_equal(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 = MyEntityMember.get_attributes()[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(data_el.terminals.keys(), 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(')'))
 def test_clone(self):
     rc_attr = MyEntityMember.get_attributes()['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)
Example #3
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
Example #4
0
 def test_clone(self):
     rc_attr = MyEntityMember.get_attributes()['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)
Example #5
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
Example #6
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__)
Example #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(')')
Example #8
0
 def test_printing_with_none_value(self):
     data_el = SimpleMemberDataElement.create()
     self.assert_equal(data_el.terminals.keys(), [])
     rc_attr = MyEntityMember.get_attributes()['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(')'))
Example #9
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]
Example #10
0
 def __collect_mapped_attributes(self, mapped_class, key):
     if isinstance(key, MappedAttributeKey):
         names = key.names
     else:
         names = key
     collected_mp_attrs = OrderedDict()
     is_mapped_cls = mapped_class is self.__mapped_cls
     if len(names) == 0 and is_mapped_cls:
         # Bootstrapping: fetch resource attributes and create new
         # mapped attributes.
         rc_attrs = get_resource_class_attributes(self.__mapped_cls)
         for rc_attr in itervalues_(rc_attrs):
             attr_key = names + (rc_attr.resource_attr,)
             attr_mp_opts = \
                 self.__configurations[-1].get_attribute_options(attr_key)
             new_mp_attr = MappedAttribute(rc_attr, options=attr_mp_opts)
             collected_mp_attrs[new_mp_attr.resource_attr] = new_mp_attr
     else:
         # Indirect access - fetch mapped attributes from some other
         # class' mapping and clone.
         if is_mapped_cls:
             mp = self
         elif len(names) == 0 and self.__is_collection_mapping:
             if provides_member_resource(mapped_class):
                 # Mapping a polymorphic member class.
                 mapped_coll_cls = get_collection_class(mapped_class)
             else:
                 # Mapping a derived collection class.
                 mapped_coll_cls = mapped_class
             mp = self.__mp_reg.find_or_create_mapping(mapped_coll_cls)
         else:
             mp = self.__mp_reg.find_or_create_mapping(mapped_class)
         mp_attrs = mp.get_attribute_map()
         for mp_attr in itervalues_(mp_attrs):
             attr_key = names + (mp_attr.name,)
             attr_mp_opts = \
                 dict(((k, v)
                       for (k, v) in
                         iteritems_(self.__configurations[-1]
                                    .get_attribute_options(attr_key))
                       if not v is None))
             clnd_mp_attr = mp_attr.clone(options=attr_mp_opts)
             collected_mp_attrs[mp_attr.resource_attr] = clnd_mp_attr
     return collected_mp_attrs
Example #11
0
 def test_ignore(self):
     rc_attr = MyEntityMember.get_attributes()['number']
     mp_attr = MappedAttribute(rc_attr, options={IGNORE_OPTION: False})
     self.assert_true(mp_attr.ignore_on_read is False)
     self.assert_true(mp_attr.ignore_on_write is False)
Example #12
0
 def test_defaults(self):
     rc_attr = MyEntityMember.get_attributes()['number']
     mp_attr = MappedAttribute(rc_attr)
     self.assert_equal(mp_attr.repr_name, rc_attr.name)
     self.assert_raises(AttributeError, getattr, mp_attr, 'foo')
     self.assert_true(str(mp_attr).startswith(mp_attr.__class__.__name__))
Example #13
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
 def test_invalid_kind(self):
     attr = terminal_attribute(str, 'foo')
     attr.kind = 'INVALID'
     mp_attr = MappedAttribute(attr, options={IGNORE_OPTION:None})
     key = MappedAttributeKey(())
     self.assert_raises(ValueError, mp_attr.should_ignore, key)