def test_all_paginate(): HashOnlyModelFactory.create_table() HashOnlyModelFactory(agency_subdomain='metzler', external_id=123) HashOnlyModelFactory(agency_subdomain='metzler2', external_id=124) obj, exclusive_start_key = HashOnlyModel.all(limit=1, paginate=True).next() obj2, _ = HashOnlyModel.all( limit=1, paginate=True, exclusive_start_key=exclusive_start_key).next() assert obj.external_id != obj2.external_id assert {obj.external_id, obj2.external_id} == {123, 124}
def test_query_primary_index_model_hash_key_should_return(): HashOnlyModelFactory.create_table() HashOnlyModelFactory(agency_subdomain='metzler') HashOnlyModelFactory(agency_subdomain='other') query = list(HashOnlyModel.query(agency_subdomain='metzler')) assert query[0].agency_subdomain == 'metzler'
def test_query_secondary_index_model_hash_key_should_return(): HashOnlyModelFactory.create_table() HashOnlyModelFactory(agency_subdomain='metzler', external_id=123) HashOnlyModelFactory(agency_subdomain='other', external_id=123) query = list( HashOnlyModel.query(external_id=123, query_index='HashOnlyExternalId')) assert set([o.agency_subdomain for o in query]) == {'metzler', 'other'}
def test_query_secondary_index_model_hash_key_should_return(): HashOnlyModelFactory.create_table() HashOnlyModelFactory(agency_subdomain='metzler', external_id=123) HashOnlyModelFactory(agency_subdomain='other', external_id=123) query = list(HashOnlyModel.query(external_id=123, query_index='HashOnlyExternalId')) assert set([o.agency_subdomain for o in query]) == {'metzler', 'other'}
def test_non_field_set_on_item_then_get(): HashOnlyModelFactory.create_table() obj = HashOnlyModelFactory(agency_subdomain='metzler', external_id=123) obj.non_field = 123 obj.non_field_class_attr = "Changed string" # This makes more sense when the attr is a property obj.save() reloaded = HashOnlyModel.get(agency_subdomain='metzler') assert not reloaded.item.get('non_field') assert not reloaded.item.get('non_field_class_attr')
def test_negative_timestamp(): long_ago = datetime.datetime.utcnow() long_ago = long_ago.replace(year=1899) HashOnlyModelFactory.create_table() HashOnlyModelFactory(agency_subdomain='metzler', external_id=123, created=long_ago) obj = HashOnlyModel.all().next() assert obj.created.year == long_ago.year assert obj.item['created'] < 0
def test_update_item_then_get_consistent(): HashOnlyModelFactory.create_table() obj = HashOnlyModelFactory(agency_subdomain='metzler', external_id=123) assert obj.external_id == 123 obj.external_id = 124 obj.save() assert obj.external_id == 124 reloaded = HashOnlyModel.get(agency_subdomain='metzler', consistent_read=True) assert reloaded.external_id == 124