summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Cook <jordan.cook@pioneer.com>2021-04-20 20:47:20 -0500
committerJordan Cook <jordan.cook@pioneer.com>2021-04-20 20:48:37 -0500
commitff25727eec93461ab507849810c45e97147bdd85 (patch)
tree0b88a8ad696ccd014b7c8d7a13e188acad80bf10
parented0e286d2b5702b04ee7dd62d2c85138d4c79652 (diff)
downloadrequests-cache-ff25727eec93461ab507849810c45e97147bdd85.tar.gz
Fix DynamoDbDict.__iter__ to return keys instead of values; update tests to test for this
-rw-r--r--HISTORY.md1
-rw-r--r--requests_cache/backends/dynamodb.py2
-rw-r--r--tests/integration/test_backends.py42
3 files changed, 23 insertions, 22 deletions
diff --git a/HISTORY.md b/HISTORY.md
index 78a1d2a..9b25a89 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -2,6 +2,7 @@
## 0.7.0 (TBD)
* Add option to manually cache response objects
+* Fix `DynamoDbDict.__iter__` to return keys instead of values
### 0.6.3 (2021-TBD)
* Fix false positive warning with `include_get_headers`
diff --git a/requests_cache/backends/dynamodb.py b/requests_cache/backends/dynamodb.py
index cad3ae6..ffb610c 100644
--- a/requests_cache/backends/dynamodb.py
+++ b/requests_cache/backends/dynamodb.py
@@ -102,7 +102,7 @@ class DynamoDbDict(BaseStorage):
def __iter__(self):
response = self.__scan_table()
for v in response['Items']:
- yield self.deserialize(v['value'].value)
+ yield v['key']
def clear(self):
response = self.__scan_table()
diff --git a/tests/integration/test_backends.py b/tests/integration/test_backends.py
index 01fc338..d84eac3 100644
--- a/tests/integration/test_backends.py
+++ b/tests/integration/test_backends.py
@@ -31,12 +31,12 @@ class BaseStorageTestCase:
d1 = self.storage_class(self.NAMESPACE, self.TABLES[0])
d2 = self.storage_class(self.NAMESPACE, self.TABLES[1])
d3 = self.storage_class(self.NAMESPACE, self.TABLES[2])
- d1[1] = 1
- d2[2] = 2
- d3[3] = 3
- assert list(d1.keys()) == [1]
- assert list(d2.keys()) == [2]
- assert list(d3.keys()) == [3]
+ d1['key_1'] = 1
+ d2['key_2'] = 2
+ d3['key_3'] = 3
+ assert list(d1.keys()) == ['key_1']
+ assert list(d2.keys()) == ['key_2']
+ assert list(d3.keys()) == ['key_3']
with pytest.raises(KeyError):
d1[4]
@@ -44,31 +44,31 @@ class BaseStorageTestCase:
def test_str(self):
d = self.storage_class(self.NAMESPACE)
d.clear()
- d[1] = 1
- d[2] = 2
- assert d == {1: 1, 2: 2}
+ d['key_1'] = 'value_1'
+ d['key_2'] = 'value_2'
+ assert dict(d) == {'key_1': 'value_1', 'key_2': 'value_2'}
def test_del(self):
d = self.storage_class(self.NAMESPACE)
d.clear()
for i in range(5):
- d[i] = i
- del d[0]
- del d[1]
- del d[2]
- assert list(d.keys()) == list(range(3, 5))
- assert list(d.values()) == list(range(3, 5))
+ d[f'key_{i}'] = i
+ del d['key_0']
+ del d['key_1']
+ del d['key_2']
+ assert set(d.keys()) == {f'key_{i}' for i in range(3, 5)}
+ assert set(d.values()) == set(range(3, 5))
with pytest.raises(KeyError):
- del d[0]
+ del d['key_0']
def test_picklable_dict(self):
if self.picklable:
d = self.storage_class(self.NAMESPACE)
- d[1] = Picklable()
+ d['key_1'] = Picklable()
d = self.storage_class(self.NAMESPACE)
- assert d[1].a == 1
- assert d[1].b == 2
+ assert d['key_1'].a == 1
+ assert d['key_1'].b == 2
def test_clear_and_work_again(self):
d1 = self.storage_class(self.NAMESPACE)
@@ -90,8 +90,8 @@ class BaseStorageTestCase:
d2 = self.storage_class(self.NAMESPACE, connection=d1.connection)
d1.clear()
d2.clear()
- d1[1] = 1
- d2[2] = 2
+ d1['key_1'] = 1
+ d2['key_2'] = 2
assert d1 == d2