Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_raw_map_attribute_with_initialized_instance_init(self):
attribute = {
'foo': 123,
'bar': 'baz'
}
initialized_instance = MapAttribute(**attribute)
actual = ExplicitRawMapModel(map_id=3, map_attr=initialized_instance)
self.assertEqual(actual.map_attr['foo'], initialized_instance['foo'])
self.assertEqual(actual.map_attr['foo'], attribute['foo'])
def test_commit(self, mocker):
connection = Connection()
mock_connection_transact_write = mocker.patch.object(connection, 'transact_write_items')
with patch(PATCH_METHOD) as req:
req.return_value = MOCK_TABLE_DESCRIPTOR
with TransactWrite(connection=connection) as t:
t.condition_check(MockModel, 1, 3, condition=(MockModel.mock_hash.does_not_exist()))
t.delete(MockModel(2, 4))
t.save(MockModel(3, 5))
t.update(MockModel(4, 6), actions=[MockModel.mock_toot.set('hello')], return_values='ALL_OLD')
expected_condition_checks = [{
'ConditionExpression': 'attribute_not_exists (#0)',
'ExpressionAttributeNames': {'#0': 'mock_hash'},
'Key': {'MockHash': {'N': '1'}, 'MockRange': {'N': '3'}},
'TableName': 'mock'}
]
expected_deletes = [{
'ConditionExpression': 'attribute_not_exists (#0)',
'ExpressionAttributeNames': {'#0': 'mock_version'},
'Key': {'MockHash': {'N': '2'}, 'MockRange': {'N': '4'}},
'TableName': 'mock'
name = UnicodeAttribute(hash_key=True)
date_created = UTCDateTimeAttribute(default=datetime.utcnow)
class Location(MapAttribute):
lat = NumberAttribute(attr_name='latitude')
lng = NumberAttribute(attr_name='longitude')
name = UnicodeAttribute()
class Person(MapAttribute):
fname = UnicodeAttribute(attr_name='firstName')
lname = UnicodeAttribute(null=True)
age = NumberAttribute(null=True)
is_male = BooleanAttribute(attr_name='is_dude')
def foo(self):
return 1
class ComplexModel(Model):
class Meta:
table_name = 'ComplexModel'
person = Person(attr_name='weird_person')
key = NumberAttribute(hash_key=True)
class OfficeEmployee(Model):
class Meta:
def foo(self):
return 1
class ComplexModel(Model):
class Meta:
table_name = 'ComplexModel'
person = Person(attr_name='weird_person')
key = NumberAttribute(hash_key=True)
class OfficeEmployee(Model):
class Meta:
table_name = 'OfficeEmployeeModel'
office_employee_id = NumberAttribute(hash_key=True)
person = Person()
office_location = Location()
def foo(self):
return 1
class CarInfoMap(MapAttribute):
make = UnicodeAttribute(null=False)
model = UnicodeAttribute(null=True)
class CarModel(Model):
class Meta:
table_name = 'CarModel'
car_id = NumberAttribute(hash_key=True, null=False)
def test_attribute_paths_wrapping(self):
class InnerMapAttribute(MapAttribute):
map_attr = MapAttribute(attr_name='dyn_map_attr')
class MiddleMapAttributeA(MapAttribute):
inner_map = InnerMapAttribute(attr_name='dyn_in_map_a')
class MiddleMapAttributeB(MapAttribute):
inner_map = InnerMapAttribute(attr_name='dyn_in_map_b')
class OuterMapAttribute(MapAttribute):
mid_map_a = MiddleMapAttributeA()
mid_map_b = MiddleMapAttributeB()
class MyModel(Model):
outer_map = OuterMapAttribute(attr_name='dyn_out_map')
mid_map_a_map_attr = MyModel.outer_map.mid_map_a.inner_map.map_attr
mid_map_b_map_attr = MyModel.outer_map.mid_map_b.inner_map.map_attr
assert mid_map_a_map_attr.attr_name == 'dyn_map_attr'
assert mid_map_a_map_attr.attr_path == ['dyn_out_map', 'mid_map_a', 'dyn_in_map_a', 'dyn_map_attr']
assert mid_map_b_map_attr.attr_name == 'dyn_map_attr'
assert mid_map_b_map_attr.attr_path == ['dyn_out_map', 'mid_map_b', 'dyn_in_map_b', 'dyn_map_attr']
car_id = NumberAttribute(null=False)
car_color = UnicodeAttribute(null=True)
car_info = CarInfoMap(null=True)
class OfficeEmployeeMap(MapAttribute):
office_employee_id = NumberAttribute()
person = Person()
office_location = Location()
def cool_function(self):
return 1
class GroceryList(Model):
class Meta:
table_name = 'GroceryListModel'
store_name = UnicodeAttribute(hash_key=True)
groceries = ListAttribute()
class Office(Model):
class Meta:
table_name = 'OfficeModel'
office_id = NumberAttribute(hash_key=True)
address = Location()
employees = ListAttribute(of=OfficeEmployeeMap)
class BooleanModel(Model):
user_id = NumberAttribute(hash_key=True)
created_at = UTCDateTimeAttribute(range_key=True, default=datetime.now())
amount = NumberAttribute()
currency = UnicodeAttribute()
class DifferentRegion(Model):
class Meta:
region = 'us-east-2'
table_name = 'different-region'
entry_index = NumberAttribute(hash_key=True)
class Foo(Model):
class Meta:
region = 'us-east-1'
table_name = 'foo'
bar = NumberAttribute(hash_key=True)
star = UnicodeAttribute(null=True)
version = VersionAttribute()
TEST_MODELS = [
BankStatement,
DifferentRegion,
LineItem,
User,
Foo
]
views = NumberAttribute(null=True)
is_active = BooleanAttribute(null=True)
signature = UnicodeAttribute(null=True)
ttl = TTLAttribute(null=True)
class CustomAttrIndex(LocalSecondaryIndex):
class Meta:
read_capacity_units = 2
write_capacity_units = 1
projection = AllProjection()
overidden_uid = UnicodeAttribute(hash_key=True, attr_name='user_id')
class CustomAttrNameModel(Model):
"""
A testing model
"""
class Meta:
table_name = 'CustomAttrModel'
overidden_user_name = UnicodeAttribute(hash_key=True, attr_name='user_name')
overidden_user_id = UnicodeAttribute(range_key=True, attr_name='user_id')
overidden_attr = UnicodeAttribute(attr_name='foo_attr', null=True)
uid_index = CustomAttrIndex()
class UserModel(Model):
"""
A testing model
class MapAttrSubClassWithRawMapAttr(MapAttribute):
num_field = NumberAttribute()
str_field = UnicodeAttribute()
map_field = MapAttribute()
class ExplicitRawMapAsMemberOfSubClass(Model):
class Meta:
table_name = 'ExplicitRawMapAsMemberOfSubClass'
map_id = NumberAttribute(hash_key=True)
sub_attr = MapAttrSubClassWithRawMapAttr()
class Animal(Model):
name = UnicodeAttribute(hash_key=True)
class Dog(Animal):
class Meta:
table_name = 'Dog'
breed = UnicodeAttribute()
class TTLModel(Model):
class Meta:
table_name = 'TTLModel'
user_name = UnicodeAttribute(hash_key=True)
my_ttl = TTLAttribute(default_for_new=timedelta(minutes=1))
def test_raw_map_json_serialize(self):
raw = {
"foo": "bar",
"num": 3,
"nested": {
"nestedfoo": "nestedbar"
}
}
serialized_raw = json.dumps(raw, sort_keys=True)
serialized_attr_from_raw = json.dumps(
AttributeTestModel(map_attr=raw).map_attr.as_dict(),
sort_keys=True)
serialized_attr_from_map = json.dumps(
AttributeTestModel(map_attr=MapAttribute(**raw)).map_attr.as_dict(),
sort_keys=True)
assert serialized_attr_from_raw == serialized_raw
assert serialized_attr_from_map == serialized_raw