Updating dynamodb2 tests for newer boto.

This commit is contained in:
Steve Pulec 2014-07-22 21:47:56 -04:00
parent 415291d11a
commit 12d61ede41
3 changed files with 138 additions and 138 deletions

View File

@ -4,13 +4,10 @@ python:
- 2.7 - 2.7
env: env:
matrix: matrix:
- BOTO_VERSION==2.31.1
- BOTO_VERSION=2.25.0 - BOTO_VERSION=2.25.0
- BOTO_VERSION=2.19.0 - BOTO_VERSION=2.19.0
- BOTO_VERSION=2.12.0 - BOTO_VERSION=2.12.0
- BOTO_VERSION=2.11.0
- BOTO_VERSION=2.10.0
- BOTO_VERSION=2.9.9
- BOTO_VERSION=2.8
- BOTO_VERSION=2.7 - BOTO_VERSION=2.7
install: install:
- pip install boto==$BOTO_VERSION - pip install boto==$BOTO_VERSION

View File

@ -9,12 +9,11 @@ try:
from boto.dynamodb2.fields import RangeKey from boto.dynamodb2.fields import RangeKey
from boto.dynamodb2.table import Table from boto.dynamodb2.table import Table
from boto.dynamodb2.table import Item from boto.dynamodb2.table import Item
from boto.dynamodb.exceptions import DynamoDBKeyNotFoundError
from boto.dynamodb2.exceptions import ValidationException from boto.dynamodb2.exceptions import ValidationException
from boto.dynamodb2.exceptions import ConditionalCheckFailedException
except ImportError: except ImportError:
print "This boto version is not supported" pass
def create_table(): def create_table():
table = Table.create('messages', schema=[ table = Table.create('messages', schema=[
HashKey('forum_name'), HashKey('forum_name'),
@ -25,10 +24,10 @@ def create_table():
}) })
return table return table
def iterate_results(res): def iterate_results(res):
for i in res: for i in res:
print i pass
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@ -39,19 +38,19 @@ def test_create_table():
expected = { expected = {
'Table': { 'Table': {
'AttributeDefinitions': [ 'AttributeDefinitions': [
{'AttributeName': 'forum_name', 'AttributeType': 'S'}, {'AttributeName': 'forum_name', 'AttributeType': 'S'},
{'AttributeName': 'subject', 'AttributeType': 'S'} {'AttributeName': 'subject', 'AttributeType': 'S'}
], ],
'ProvisionedThroughput': { 'ProvisionedThroughput': {
'NumberOfDecreasesToday': 0, 'WriteCapacityUnits': 10, 'ReadCapacityUnits': 10 'NumberOfDecreasesToday': 0, 'WriteCapacityUnits': 10, 'ReadCapacityUnits': 10
}, },
'TableSizeBytes': 0, 'TableSizeBytes': 0,
'TableName': 'messages', 'TableName': 'messages',
'TableStatus': 'ACTIVE', 'TableStatus': 'ACTIVE',
'KeySchema': [ 'KeySchema': [
{'KeyType': 'HASH', 'AttributeName': 'forum_name'}, {'KeyType': 'HASH', 'AttributeName': 'forum_name'},
{'KeyType': 'RANGE', 'AttributeName': 'subject'} {'KeyType': 'RANGE', 'AttributeName': 'subject'}
], ],
'ItemCount': 0, 'CreationDateTime': 1326499200.0 'ItemCount': 0, 'CreationDateTime': 1326499200.0
} }
} }
@ -75,26 +74,26 @@ def test_delete_table():
def test_update_table_throughput(): def test_update_table_throughput():
table = create_table() table = create_table()
table.throughput["read"].should.equal(10) table.throughput["read"].should.equal(10)
table.throughput["write"].should.equal(10) table.throughput["write"].should.equal(10)
table.update(throughput={ table.update(throughput={
'read': 5, 'read': 5,
'write': 15, 'write': 15,
}) })
table.throughput["read"].should.equal(5) table.throughput["read"].should.equal(5)
table.throughput["write"].should.equal(15) table.throughput["write"].should.equal(15)
table.update(throughput={ table.update(throughput={
'read': 5, 'read': 5,
'write': 6, 'write': 6,
}) })
table.describe() table.describe()
table.throughput["read"].should.equal(5) table.throughput["read"].should.equal(5)
table.throughput["write"].should.equal(6) table.throughput["write"].should.equal(6)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
def test_item_add_and_describe_and_update(): def test_item_add_and_describe_and_update():
@ -105,10 +104,10 @@ def test_item_add_and_describe_and_update():
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
ok.should.equal(True) ok.should.equal(True)
table.get_item(forum_name="LOLCat Forum",subject='Check this out!').should_not.be.none table.get_item(forum_name="LOLCat Forum", subject='Check this out!').should_not.be.none
returned_item = table.get_item( returned_item = table.get_item(
forum_name='LOLCat Forum', forum_name='LOLCat Forum',
@ -121,7 +120,7 @@ def test_item_add_and_describe_and_update():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
returned_item['SentBy'] = 'User B' returned_item['SentBy'] = 'User B'
returned_item.save(overwrite=True) returned_item.save(overwrite=True)
@ -136,8 +135,8 @@ def test_item_add_and_describe_and_update():
'SentBy': 'User B', 'SentBy': 'User B',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
def test_item_put_without_table(): def test_item_put_without_table():
@ -149,7 +148,7 @@ def test_item_put_without_table():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item =Item(table,item_data) item = Item(table, item_data)
item.save.when.called_with().should.throw(JSONResponseError) item.save.when.called_with().should.throw(JSONResponseError)
@ -163,7 +162,7 @@ def test_get_missing_item():
hash_key='tester', hash_key='tester',
range_key='other', range_key='other',
).should.throw(ValidationException) ).should.throw(ValidationException)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
@ -182,10 +181,10 @@ def test_get_item_without_range_key():
'read': 10, 'read': 10,
'write': 10, 'write': 10,
}) })
hash_key = 3241526475 hash_key = 3241526475
range_key = 1234567890987 range_key = 1234567890987
table.put_item( data = {'test_hash':hash_key, 'test_range':range_key}) table.put_item(data={'test_hash': hash_key, 'test_range': range_key})
table.get_item.when.called_with(test_hash=hash_key).should.throw(ValidationException) table.get_item.when.called_with(test_hash=hash_key).should.throw(ValidationException)
@ -199,22 +198,21 @@ def test_delete_item():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item =Item(table,item_data) item = Item(table, item_data)
item['subject'] = 'Check this out!' item['subject'] = 'Check this out!'
item.save() item.save()
table.count().should.equal(1) table.count().should.equal(1)
response = item.delete() response = item.delete()
response.should.equal(True) response.should.equal(True)
table.count().should.equal(0) table.count().should.equal(0)
item.delete.when.called_with().should.throw(ConditionalCheckFailedException) item.delete().should.equal(False)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
def test_delete_item_with_undeclared_table(): def test_delete_item_with_undeclared_table():
conn = boto.connect_dynamodb()
table = Table("undeclared-table") table = Table("undeclared-table")
item_data = { item_data = {
'forum_name': 'LOLCat Forum', 'forum_name': 'LOLCat Forum',
@ -222,9 +220,9 @@ def test_delete_item_with_undeclared_table():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item =Item(table,item_data) item = Item(table, item_data)
item.delete.when.called_with().should.throw(JSONResponseError) item.delete.when.called_with().should.throw(JSONResponseError)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
@ -237,11 +235,11 @@ def test_query():
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
'subject': 'Check this out!' 'subject': 'Check this out!'
} }
item =Item(table,item_data) item = Item(table, item_data)
item.save(overwrite=True) item.save(overwrite=True)
item['forum_name'] = 'the-key' item['forum_name'] = 'the-key'
item['subject'] = '456' item['subject'] = '456'
item.save(overwrite=True) item.save(overwrite=True)
@ -249,34 +247,34 @@ def test_query():
item['forum_name'] = 'the-key' item['forum_name'] = 'the-key'
item['subject'] = '123' item['subject'] = '123'
item.save(overwrite=True) item.save(overwrite=True)
item['forum_name'] = 'the-key' item['forum_name'] = 'the-key'
item['subject'] = '789' item['subject'] = '789'
item.save(overwrite=True) item.save(overwrite=True)
table.count().should.equal(4) table.count().should.equal(4)
results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) results = table.query(forum_name__eq='the-key', subject__gt='1', consistent=True)
expected = ["123", "456", "789"] expected = ["123", "456", "789"]
for index, item in enumerate(results): for index, item in enumerate(results):
item["subject"].should.equal(expected[index]) item["subject"].should.equal(expected[index])
results = table.query(forum_name__eq="the-key", subject__gt='1', reverse=True) results = table.query(forum_name__eq="the-key", subject__gt='1', reverse=True)
for index, item in enumerate(results): for index, item in enumerate(results):
item["subject"].should.equal(expected[len(expected)-1-index]) item["subject"].should.equal(expected[len(expected) - 1 - index])
results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) results = table.query(forum_name__eq='the-key', subject__gt='1', consistent=True)
sum(1 for _ in results).should.equal(3) sum(1 for _ in results).should.equal(3)
results = table.query(forum_name__eq='the-key', subject__gt='234',consistent=True) results = table.query(forum_name__eq='the-key', subject__gt='234', consistent=True)
sum(1 for _ in results).should.equal(2) sum(1 for _ in results).should.equal(2)
results = table.query(forum_name__eq='the-key', subject__gt='9999') results = table.query(forum_name__eq='the-key', subject__gt='9999')
sum(1 for _ in results).should.equal(0) sum(1 for _ in results).should.equal(0)
results = table.query(forum_name__eq='the-key', subject__beginswith='12') results = table.query(forum_name__eq='the-key', subject__beginswith='12')
sum(1 for _ in results).should.equal(1) sum(1 for _ in results).should.equal(1)
results = table.query(forum_name__eq='the-key', subject__beginswith='7') results = table.query(forum_name__eq='the-key', subject__beginswith='7')
sum(1 for _ in results).should.equal(1) sum(1 for _ in results).should.equal(1)
@ -295,11 +293,11 @@ def test_query_with_undeclared_table():
) )
iterate_results.when.called_with(results).should.throw(JSONResponseError) iterate_results.when.called_with(results).should.throw(JSONResponseError)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
def test_scan(): def test_scan():
table = create_table() table = create_table()
item_data = { item_data = {
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
@ -307,14 +305,14 @@ def test_scan():
} }
item_data['forum_name'] = 'the-key' item_data['forum_name'] = 'the-key'
item_data['subject'] = '456' item_data['subject'] = '456'
item = Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
item['forum_name'] = 'the-key' item['forum_name'] = 'the-key'
item['subject'] = '123' item['subject'] = '123'
item.save() item.save()
item_data = { item_data = {
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User B', 'SentBy': 'User B',
@ -322,12 +320,12 @@ def test_scan():
'Ids': set([1, 2, 3]), 'Ids': set([1, 2, 3]),
'PK': 7, 'PK': 7,
} }
item_data['forum_name'] = 'the-key' item_data['forum_name'] = 'the-key'
item_data['subject'] = '789' item_data['subject'] = '789'
item = Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
results = table.scan() results = table.scan()
sum(1 for _ in results).should.equal(3) sum(1 for _ in results).should.equal(3)
@ -340,10 +338,10 @@ def test_scan():
results = table.scan(Ids__null=False) results = table.scan(Ids__null=False)
sum(1 for _ in results).should.equal(1) sum(1 for _ in results).should.equal(1)
results = table.scan(Ids__null=True) results = table.scan(Ids__null=True)
sum(1 for _ in results).should.equal(2) sum(1 for _ in results).should.equal(2)
results = table.scan(PK__between=[8, 9]) results = table.scan(PK__between=[8, 9])
sum(1 for _ in results).should.equal(0) sum(1 for _ in results).should.equal(0)
@ -379,15 +377,15 @@ def test_write_batch():
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
batch.put_item(data={ batch.put_item(data={
'forum_name': 'the-key', 'forum_name': 'the-key',
'subject': '789', 'subject': '789',
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User B', 'SentBy': 'User B',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
table.count().should.equal(2) table.count().should.equal(2)
with table.batch_write() as batch: with table.batch_write() as batch:
batch.delete_item( batch.delete_item(
@ -407,17 +405,17 @@ def test_batch_read():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item_data['forum_name'] = 'the-key' item_data['forum_name'] = 'the-key'
item_data['subject'] = '456' item_data['subject'] = '456'
item = Item(table,item_data)
item.save()
item = Item(table,item_data) item = Item(table, item_data)
item.save()
item = Item(table, item_data)
item_data['forum_name'] = 'the-key' item_data['forum_name'] = 'the-key'
item_data['subject'] = '123' item_data['subject'] = '123'
item.save() item.save()
item_data = { item_data = {
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
@ -426,21 +424,25 @@ def test_batch_read():
'Ids': set([1, 2, 3]), 'Ids': set([1, 2, 3]),
'PK': 7, 'PK': 7,
} }
item = Item(table,item_data) item = Item(table, item_data)
item_data['forum_name'] = 'another-key' item_data['forum_name'] = 'another-key'
item_data['subject'] = '789' item_data['subject'] = '789'
item.save() item.save()
results = table.batch_get(keys=[ results = table.batch_get(
{'forum_name': 'the-key', 'subject': '123'}, keys=[
{'forum_name': 'another-key', 'subject': '789'}]) {'forum_name': 'the-key', 'subject': '123'},
{'forum_name': 'another-key', 'subject': '789'},
]
)
# Iterate through so that batch_item gets called # Iterate through so that batch_item gets called
count = len([x for x in results]) count = len([x for x in results])
count.should.equal(2) count.should.equal(2)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
def test_get_key_fields(): def test_get_key_fields():
table = create_table() table = create_table()
kf = table.get_key_fields() kf = table.get_key_fields()
kf.should.equal(['forum_name','subject']) kf.should.equal(['forum_name', 'subject'])

View File

@ -6,12 +6,12 @@ from moto import mock_dynamodb2
from tests.helpers import requires_boto_gte from tests.helpers import requires_boto_gte
try: try:
from boto.dynamodb2.fields import HashKey from boto.dynamodb2.fields import HashKey
from boto.dynamodb2.fields import RangeKey
from boto.dynamodb2.table import Table from boto.dynamodb2.table import Table
from boto.dynamodb2.table import Item from boto.dynamodb2.table import Item
except ImportError: except ImportError:
print "This boto version is not supported" pass
def create_table(): def create_table():
table = Table.create('messages', schema=[ table = Table.create('messages', schema=[
HashKey('forum_name') HashKey('forum_name')
@ -22,34 +22,34 @@ def create_table():
return table return table
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@mock_dynamodb2 @mock_dynamodb2
@freeze_time("2012-01-14") @freeze_time("2012-01-14")
def test_create_table(): def test_create_table():
table = create_table() create_table()
expected = { expected = {
'Table': { 'Table': {
'AttributeDefinitions': [ 'AttributeDefinitions': [
{'AttributeName': 'forum_name', 'AttributeType': 'S'} {'AttributeName': 'forum_name', 'AttributeType': 'S'}
], ],
'ProvisionedThroughput': { 'ProvisionedThroughput': {
'NumberOfDecreasesToday': 0, 'WriteCapacityUnits': 10, 'ReadCapacityUnits': 10 'NumberOfDecreasesToday': 0, 'WriteCapacityUnits': 10, 'ReadCapacityUnits': 10
}, },
'TableSizeBytes': 0, 'TableSizeBytes': 0,
'TableName': 'messages', 'TableName': 'messages',
'TableStatus': 'ACTIVE', 'TableStatus': 'ACTIVE',
'KeySchema': [ 'KeySchema': [
{'KeyType': 'HASH', 'AttributeName': 'forum_name'} {'KeyType': 'HASH', 'AttributeName': 'forum_name'}
], ],
'ItemCount': 0, 'CreationDateTime': 1326499200.0 'ItemCount': 0, 'CreationDateTime': 1326499200.0
} }
} }
conn = boto.dynamodb2.connect_to_region( conn = boto.dynamodb2.connect_to_region(
'us-west-2', 'us-west-2',
aws_access_key_id="ak", aws_access_key_id="ak",
aws_secret_access_key="sk") aws_secret_access_key="sk"
)
conn.describe_table('messages').should.equal(expected) conn.describe_table('messages').should.equal(expected)
@ -71,13 +71,12 @@ def test_delete_table():
def test_update_table_throughput(): def test_update_table_throughput():
table = create_table() table = create_table()
table.throughput["read"].should.equal(10) table.throughput["read"].should.equal(10)
table.throughput["write"].should.equal(10) table.throughput["write"].should.equal(10)
table.update(throughput={ table.update(throughput={
'read': 5, 'read': 5,
'write': 6, 'write': 6,
}) })
table.throughput["read"].should.equal(5) table.throughput["read"].should.equal(5)
table.throughput["write"].should.equal(6) table.throughput["write"].should.equal(6)
@ -87,17 +86,17 @@ def test_update_table_throughput():
@mock_dynamodb2 @mock_dynamodb2
def test_item_add_and_describe_and_update(): def test_item_add_and_describe_and_update():
table = create_table() table = create_table()
data={ data = {
'forum_name': 'LOLCat Forum', 'forum_name': 'LOLCat Forum',
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
} }
table.put_item(data = data) table.put_item(data=data)
returned_item = table.get_item(forum_name="LOLCat Forum") returned_item = table.get_item(forum_name="LOLCat Forum")
returned_item.should_not.be.none returned_item.should_not.be.none
dict(returned_item).should.equal({ dict(returned_item).should.equal({
'forum_name': 'LOLCat Forum', 'forum_name': 'LOLCat Forum',
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
@ -108,7 +107,7 @@ def test_item_add_and_describe_and_update():
returned_item.save(overwrite=True) returned_item.save(overwrite=True)
returned_item = table.get_item( returned_item = table.get_item(
forum_name='LOLCat Forum' forum_name='LOLCat Forum'
) )
dict(returned_item).should.equal({ dict(returned_item).should.equal({
'forum_name': 'LOLCat Forum', 'forum_name': 'LOLCat Forum',
@ -125,9 +124,9 @@ def test_item_put_without_table():
conn.put_item.when.called_with( conn.put_item.when.called_with(
table_name='undeclared-table', table_name='undeclared-table',
item={ item={
'forum_name': 'LOLCat Forum', 'forum_name': 'LOLCat Forum',
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
} }
).should.throw(JSONResponseError) ).should.throw(JSONResponseError)
@ -162,17 +161,17 @@ def test_delete_item():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item =Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
table.count().should.equal(1) table.count().should.equal(1)
response = item.delete() response = item.delete()
response.should.equal(True) response.should.equal(True)
table.count().should.equal(0) table.count().should.equal(0)
item.delete.when.called_with().should.throw(JSONResponseError) item.delete().should.equal(False)
@requires_boto_gte("2.9") @requires_boto_gte("2.9")
@ -197,11 +196,11 @@ def test_query():
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item =Item(table,item_data) item = Item(table, item_data)
item.save(overwrite = True) item.save(overwrite=True)
table.count().should.equal(1) table.count().should.equal(1)
table = Table("messages") table = Table("messages")
results = table.query(forum_name__eq='the-key') results = table.query(forum_name__eq='the-key')
sum(1 for _ in results).should.equal(1) sum(1 for _ in results).should.equal(1)
@ -213,7 +212,7 @@ def test_query_with_undeclared_table():
conn.query.when.called_with( conn.query.when.called_with(
table_name='undeclared-table', table_name='undeclared-table',
key_conditions= {"forum_name": {"ComparisonOperator": "EQ", "AttributeValueList": [{"S": "the-key"}]}} key_conditions={"forum_name": {"ComparisonOperator": "EQ", "AttributeValueList": [{"S": "the-key"}]}}
).should.throw(JSONResponseError) ).should.throw(JSONResponseError)
@ -228,9 +227,9 @@ def test_scan():
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item_data['forum_name'] = 'the-key' item_data['forum_name'] = 'the-key'
item = Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
item['forum_name'] = 'the-key2' item['forum_name'] = 'the-key2'
item.save(overwrite=True) item.save(overwrite=True)
@ -243,8 +242,8 @@ def test_scan():
'PK': 7, 'PK': 7,
} }
item_data['forum_name'] = 'the-key3' item_data['forum_name'] = 'the-key3'
item = Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
results = table.scan() results = table.scan()
sum(1 for _ in results).should.equal(3) sum(1 for _ in results).should.equal(3)
@ -298,14 +297,14 @@ def test_write_batch():
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User A', 'SentBy': 'User A',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
batch.put_item(data={ batch.put_item(data={
'forum_name': 'the-key2', 'forum_name': 'the-key2',
'subject': '789', 'subject': '789',
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
'SentBy': 'User B', 'SentBy': 'User B',
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
}) })
table.count().should.equal(2) table.count().should.equal(2)
with table.batch_write() as batch: with table.batch_write() as batch:
@ -328,12 +327,12 @@ def test_batch_read():
'ReceivedTime': '12/9/2011 11:36:03 PM', 'ReceivedTime': '12/9/2011 11:36:03 PM',
} }
item_data['forum_name'] = 'the-key1' item_data['forum_name'] = 'the-key1'
item = Item(table,item_data) item = Item(table, item_data)
item.save() item.save()
item = Item(table,item_data) item = Item(table, item_data)
item_data['forum_name'] = 'the-key2' item_data['forum_name'] = 'the-key2'
item.save(overwrite = True) item.save(overwrite=True)
item_data = { item_data = {
'Body': 'http://url_to_lolcat.gif', 'Body': 'http://url_to_lolcat.gif',
@ -342,13 +341,16 @@ def test_batch_read():
'Ids': set([1, 2, 3]), 'Ids': set([1, 2, 3]),
'PK': 7, 'PK': 7,
} }
item = Item(table,item_data) item = Item(table, item_data)
item_data['forum_name'] = 'another-key' item_data['forum_name'] = 'another-key'
item.save(overwrite = True) item.save(overwrite=True)
results = table.batch_get(keys=[ results = table.batch_get(
{'forum_name': 'the-key1'}, keys=[
{'forum_name': 'another-key'}]) {'forum_name': 'the-key1'},
{'forum_name': 'another-key'},
]
)
# Iterate through so that batch_item gets called # Iterate through so that batch_item gets called
count = len([x for x in results]) count = len([x for x in results])
@ -372,12 +374,11 @@ def test_get_special_item():
'read': 10, 'read': 10,
'write': 10, 'write': 10,
}) })
data={ data = {
'date-joined': 127549192, 'date-joined': 127549192,
'SentBy': 'User A', 'SentBy': 'User A',
} }
table.put_item(data = data) table.put_item(data=data)
returned_item = table.get_item(**{'date-joined': 127549192}) returned_item = table.get_item(**{'date-joined': 127549192})
dict(returned_item).should.equal(data) dict(returned_item).should.equal(data)