diff --git a/moto/dynamodb2/responses.py b/moto/dynamodb2/responses.py index 9c960ef48..8f90e8b04 100644 --- a/moto/dynamodb2/responses.py +++ b/moto/dynamodb2/responses.py @@ -243,6 +243,10 @@ class DynamoHandler(BaseResponse): if limit: items = items[:limit] + reversed = self.body.get("ScanIndexForward") + if reversed != False: + items.reverse() + result = { "Count": len(items), "Items": [item.attrs for item in items], diff --git a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py index b879600f8..47d283396 100644 --- a/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py +++ b/tests/test_dynamodb2/test_dynamodb_table_with_range_key.py @@ -256,6 +256,15 @@ def test_query(): table.count().should.equal(4) + results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) + expected = ["123", "456", "789"] + for index, item in enumerate(results): + item["subject"].should.equal(expected[index]) + + results = table.query(forum_name__eq="the-key", subject__gt='1', reverse=True) + for index, item in enumerate(results): + item["subject"].should.equal(expected[len(expected)-1-index]) + results = table.query(forum_name__eq='the-key', subject__gt='1',consistent=True) sum(1 for _ in results).should.equal(3)