diff --git a/moto/dynamodb2/models.py b/moto/dynamodb2/models.py index 2ee5da20..f516d14a 100644 --- a/moto/dynamodb2/models.py +++ b/moto/dynamodb2/models.py @@ -659,7 +659,7 @@ class DynamoDBBackend(BaseBackend): return item def delete_item(self, table_name, keys): - table = self.tables.get(table_name) + table = self.get_table(table_name) if not table: return None hash_key, range_key = self.get_keys_value(table, keys) diff --git a/moto/dynamodb2/responses.py b/moto/dynamodb2/responses.py index 3811bbb7..1e23c832 100644 --- a/moto/dynamodb2/responses.py +++ b/moto/dynamodb2/responses.py @@ -418,6 +418,11 @@ class DynamoHandler(BaseResponse): name = self.body['TableName'] keys = self.body['Key'] return_values = self.body.get('ReturnValues', '') + table = dynamodb_backend2.get_table(name) + if not table: + er = 'com.amazonaws.dynamodb.v20120810#ConditionalCheckFailedException' + return self.error(er) + item = dynamodb_backend2.delete_item(name, keys) if item and return_values == 'ALL_OLD': item_dict = item.to_json() diff --git a/tests/test_dynamodb2/test_dynamodb_table_without_range_key.py b/tests/test_dynamodb2/test_dynamodb_table_without_range_key.py index 36e1b6c6..5ea24211 100644 --- a/tests/test_dynamodb2/test_dynamodb_table_without_range_key.py +++ b/tests/test_dynamodb2/test_dynamodb_table_without_range_key.py @@ -199,7 +199,8 @@ def test_delete_item(): table.count().should.equal(0) - item.delete().should.equal(False) + # Deletes are idempotent and 'False' here would imply an error condition + item.delete().should.equal(True) @requires_boto_gte("2.9")