From 18a328aa6b8020b8e31afc83710ae2ad25feae41 Mon Sep 17 00:00:00 2001 From: alexfurmenkov Date: Thu, 22 Jan 2026 15:05:21 +0100 Subject: [PATCH] #1543 tests to check if cache key length influence caching behavior. --- .../test_cache/test_in_memory_cache.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/unit/test_services/test_cache/test_in_memory_cache.py b/tests/unit/test_services/test_cache/test_in_memory_cache.py index 036347493..7480088ae 100644 --- a/tests/unit/test_services/test_cache/test_in_memory_cache.py +++ b/tests/unit/test_services/test_cache/test_in_memory_cache.py @@ -1,8 +1,41 @@ +import logging + +import pytest + from cdisc_rules_engine.services.cache.in_memory_cache_service import ( InMemoryCacheService, ) +def test_cache_key_exceeds_max_size(): + cache = InMemoryCacheService(max_size=56) + cache.add("key" * 10000, "test data") + + assert cache.exists("key" * 10000) + + +@pytest.mark.skip(reason="Demo test to show value too large scenario") +def test_demo_raises_when_data_becomes_bigger_after_check(monkeypatch, caplog): + cache = InMemoryCacheService(max_size=56) + original_setitem = cache.cache.__setitem__ + + def exploding_setitem(self, key, value): + value = value + value + original_setitem(key, value) + + monkeypatch.setattr( + cache.cache.__class__, + "__setitem__", + exploding_setitem, + ) + with caplog.at_level(logging.WARNING): + cache.add("test", "test data") + + assert "Failed to add result to cache for key 'test'" in caplog.text + assert "value too large" in caplog.text + assert "test" not in cache.cache + + def test_cache_value_exceeds_max_size(): cache = InMemoryCacheService(max_size=1) cache.add("test", "this is a test")