def test_cache_purges_after_ttl(): mockdatetime = MockDatetime(datetime(2019, 4, 1, 10)) cache = ReadthroughTTLCache(timedelta(hours=2), lambda x: "payload") with patch("datetime.datetime", mockdatetime): cache.get("key_a", force_store=True) # after one hour mockdatetime.set_now(datetime(2019, 4, 1, 11)) cache.purge_expired_entries() assert "key_a" in cache # after two hours one minute mockdatetime.set_now(datetime(2019, 4, 1, 12, 1)) cache.purge_expired_entries() assert "key_a" not in cache
def test_doesnt_cache_unless_accessed_within_ttl(): mockdatetime = MockDatetime(datetime(2019, 4, 1, 10)) cache = ReadthroughTTLCache(timedelta(hours=4), lambda x: "payload") with patch("datetime.datetime", mockdatetime): cache.get("key_a") # after one hour mockdatetime.set_now(datetime(2019, 4, 1, 11)) assert "key_a" not in cache # after two hours mockdatetime.set_now(datetime(2019, 4, 1, 12)) cache.get("key_a") # after three hours mockdatetime.set_now(datetime(2019, 4, 1, 13)) assert "key_a" in cache