diff options
author | Jordan Cook <jordan.cook@pioneer.com> | 2022-05-03 15:11:54 -0500 |
---|---|---|
committer | Jordan Cook <jordan.cook@pioneer.com> | 2022-05-03 19:58:28 -0500 |
commit | 375e611e50b7d2780e8d7007455b48453c9ba4b3 (patch) | |
tree | d05ca25bfd5a633170812ecd5282b7a0f690cd27 /tests/unit | |
parent | 7f4c20525770d463c5526fa601e8e3b5472cf2e6 (diff) | |
download | requests-cache-375e611e50b7d2780e8d7007455b48453c9ba4b3.tar.gz |
Add 'older_than' argument to remove_expired_responses()
Diffstat (limited to 'tests/unit')
-rw-r--r-- | tests/unit/test_session.py | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/unit/test_session.py b/tests/unit/test_session.py index 6e37ded..7d22631 100644 --- a/tests/unit/test_session.py +++ b/tests/unit/test_session.py @@ -18,6 +18,7 @@ from requests_cache import ALL_METHODS, CachedSession from requests_cache._utils import get_placeholder_class from requests_cache.backends import BACKEND_CLASSES, BaseCache, SQLiteDict from requests_cache.backends.base import DESERIALIZE_ERRORS +from requests_cache.models import CachedRequest, CachedResponse from requests_cache.policy.expiration import DO_NOT_CACHE, EXPIRE_IMMEDIATELY, NEVER_EXPIRE from tests.conftest import ( MOCKED_URL, @@ -646,10 +647,12 @@ def test_remove_expired_responses__error(mock_session): def error_on_key(key): if key == response_2.cache_key: raise PickleError - return response_1 + return CachedResponse.from_response(response_1) + # Test the generic BaseCache implementation, not the SQLite-specific one with patch.object(SQLiteDict, '__getitem__', side_effect=error_on_key): BaseCache.remove_expired_responses(mock_session.cache) + assert len(mock_session.cache.responses) == 1 assert mock_session.get(MOCKED_URL).from_cache is True assert mock_session.get(MOCKED_URL_JSON).from_cache is False @@ -706,6 +709,36 @@ def test_remove_expired_responses__per_request(mock_session): assert len(mock_session.cache.responses) == 1 +# @patch_normalize_url +def test_remove_expired_responses__older_than(mock_session): + # Cache 4 responses with different creation times + response_0 = CachedResponse(request=CachedRequest(method='GET', url='https://test.com/test_0')) + mock_session.cache.save_response(response_0) + response_1 = CachedResponse(request=CachedRequest(method='GET', url='https://test.com/test_1')) + response_1.created_at -= timedelta(seconds=1) + mock_session.cache.save_response(response_1) + response_2 = CachedResponse(request=CachedRequest(method='GET', url='https://test.com/test_2')) + response_2.created_at -= timedelta(seconds=2) + mock_session.cache.save_response(response_2) + response_3 = CachedResponse(request=CachedRequest(method='GET', url='https://test.com/test_3')) + response_3.created_at -= timedelta(seconds=3) + mock_session.cache.save_response(response_3) + + # Incrementally remove responses older than 3, 2, and 1 seconds + assert len(mock_session.cache.responses) == 4 + mock_session.remove_expired_responses(older_than=timedelta(seconds=3)) + assert len(mock_session.cache.responses) == 3 + mock_session.remove_expired_responses(older_than=timedelta(seconds=2)) + assert len(mock_session.cache.responses) == 2 + mock_session.remove_expired_responses(older_than=timedelta(seconds=1)) + assert len(mock_session.cache.responses) == 1 + + # Remove the last response after it's 1 second old + time.sleep(1) + mock_session.remove_expired_responses(older_than=timedelta(seconds=1)) + assert len(mock_session.cache.responses) == 0 + + # Additional request() and send() options # ----------------------------------------------------- |