diff options
Diffstat (limited to 'tests/unit/dynamodb2/test_table.py')
-rw-r--r-- | tests/unit/dynamodb2/test_table.py | 72 |
1 files changed, 70 insertions, 2 deletions
diff --git a/tests/unit/dynamodb2/test_table.py b/tests/unit/dynamodb2/test_table.py index af674a3e..cc807f4b 100644 --- a/tests/unit/dynamodb2/test_table.py +++ b/tests/unit/dynamodb2/test_table.py @@ -1,5 +1,5 @@ import mock -import unittest +from tests.unit import unittest from boto.dynamodb2 import exceptions from boto.dynamodb2.fields import (HashKey, RangeKey, AllIndex, KeysOnlyIndex, IncludeIndex, @@ -1774,7 +1774,40 @@ class TableTestCase(unittest.TestCase): 'date_joined': { 'N': '23456' } - }) + }, expected=None, conditional_operator=None) + + def test_delete_item_conditionally(self): + with mock.patch.object( + self.users.connection, + 'delete_item', + return_value={}) as mock_delete_item: + self.assertTrue(self.users.delete_item(expected={'balance__eq': 0}, + username='johndoe', date_joined=23456)) + + mock_delete_item.assert_called_once_with('users', { + 'username': { + 'S': 'johndoe' + }, + 'date_joined': { + 'N': '23456' + } + }, + expected={ + 'balance': { + 'ComparisonOperator': 'EQ', 'AttributeValueList': [{'N': '0'}] + }, + }, + conditional_operator=None) + + def side_effect(*args, **kwargs): + raise exceptions.ConditionalCheckFailedException(400, '', {}) + + with mock.patch.object( + self.users.connection, + 'delete_item', + side_effect=side_effect) as mock_delete_item: + self.assertFalse(self.users.delete_item(expected={'balance__eq': 0}, + username='johndoe', date_joined=23456)) def test_get_key_fields_no_schema_populated(self): expected = { @@ -2593,6 +2626,41 @@ class TableTestCase(unittest.TestCase): return_value=expected) as mock_count: self.assertEqual(self.users.count(), 5) + def test_query_count_simple(self): + expected_0 = { + 'Count': 0.0, + } + + expected_1 = { + 'Count': 10.0, + } + + with mock.patch.object( + self.users.connection, + 'query', + return_value=expected_0) as mock_query: + results = self.users.query_count(username__eq='notmyname') + self.assertTrue(isinstance(results, int)) + self.assertEqual(results, 0) + self.assertEqual(mock_query.call_count, 1) + self.assertIn('scan_index_forward', mock_query.call_args[1]) + self.assertEqual(True, mock_query.call_args[1]['scan_index_forward']) + self.assertIn('limit', mock_query.call_args[1]) + self.assertEqual(None, mock_query.call_args[1]['limit']) + + with mock.patch.object( + self.users.connection, + 'query', + return_value=expected_1) as mock_query: + results = self.users.query_count(username__gt='somename', consistent=True, scan_index_forward=False, limit=10) + self.assertTrue(isinstance(results, int)) + self.assertEqual(results, 10) + self.assertEqual(mock_query.call_count, 1) + self.assertIn('scan_index_forward', mock_query.call_args[1]) + self.assertEqual(False, mock_query.call_args[1]['scan_index_forward']) + self.assertIn('limit', mock_query.call_args[1]) + self.assertEqual(10, mock_query.call_args[1]['limit']) + def test_private_batch_get(self): expected = { "ConsumedCapacity": { |