diff --git a/moto/dynamodb/responses.py b/moto/dynamodb/responses.py index 533657668..226d5d11a 100644 --- a/moto/dynamodb/responses.py +++ b/moto/dynamodb/responses.py @@ -278,7 +278,7 @@ class DynamoHandler(BaseResponse): result = { "Count": len(items), - "Items": [item.attrs for item in items], + "Items": [item.attrs for item in items if item], "ConsumedCapacityUnits": 1, "ScannedCount": scanned_count } diff --git a/tests/test_dynamodb/test_dynamodb_table_with_range_key.py b/tests/test_dynamodb/test_dynamodb_table_with_range_key.py index a50b7a666..f6ba9b307 100644 --- a/tests/test_dynamodb/test_dynamodb_table_with_range_key.py +++ b/tests/test_dynamodb/test_dynamodb_table_with_range_key.py @@ -419,6 +419,17 @@ def test_scan_with_undeclared_table(): ).should.throw(DynamoDBResponseError) +@mock_dynamodb +def test_scan_after_has_item(): + conn = boto.connect_dynamodb() + table = create_table(conn) + list(table.scan()).should.equal([]) + + table.has_item(hash_key='the-key', range_key='123') + + list(table.scan()).should.equal([]) + + @mock_dynamodb def test_write_batch(): conn = boto.connect_dynamodb() diff --git a/tests/test_dynamodb/test_dynamodb_table_without_range_key.py b/tests/test_dynamodb/test_dynamodb_table_without_range_key.py index eafccb3dd..fa8492620 100644 --- a/tests/test_dynamodb/test_dynamodb_table_without_range_key.py +++ b/tests/test_dynamodb/test_dynamodb_table_without_range_key.py @@ -335,6 +335,17 @@ def test_scan_with_undeclared_table(): ).should.throw(DynamoDBResponseError) +@mock_dynamodb +def test_scan_after_has_item(): + conn = boto.connect_dynamodb() + table = create_table(conn) + list(table.scan()).should.equal([]) + + table.has_item('the-key') + + list(table.scan()).should.equal([]) + + @mock_dynamodb def test_write_batch(): conn = boto.connect_dynamodb()