Skip to content

Commit a6b8563

Browse files
committed
[ELI-619] - adding a unit test that shows the cache expiring
1 parent 90ad257 commit a6b8563

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

tests/unit/repos/test_campaign_repo.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,37 @@ def test_get_campaign_configs_uses_cache_within_ttl(
7474
assert second[0].version == 1
7575
assert mock_s3_client.list_objects.call_count == 1
7676
assert mock_s3_client.get_object.call_count == 1
77+
78+
def test_get_campaign_configs_refreshes_after_ttl_expiry(
79+
self,
80+
repo,
81+
mock_s3_client,
82+
monkeypatch,
83+
):
84+
repo._cache_ttl_seconds = 60
85+
86+
first_config = CampaignConfigFactory.build(version=1)
87+
second_config = CampaignConfigFactory.build(version=2)
88+
89+
mock_s3_client.list_objects.return_value = {
90+
"Contents": [{"Key": "rsv.json"}]
91+
}
92+
mock_s3_client.get_object.side_effect = [
93+
make_s3_body({"campaign_config": first_config.model_dump(mode="json")}),
94+
make_s3_body({"campaign_config": second_config.model_dump(mode="json")}),
95+
]
96+
97+
current_time = {"value": 1000.0}
98+
monkeypatch.setattr("time.time", lambda: current_time["value"])
99+
100+
first = list(repo.get_campaign_configs())
101+
current_time["value"] = 1030.0
102+
second = list(repo.get_campaign_configs())
103+
current_time["value"] = 1061.0
104+
third = list(repo.get_campaign_configs())
105+
106+
assert first[0].version == 1
107+
assert second[0].version == 1
108+
assert third[0].version == 2
109+
assert mock_s3_client.list_objects.call_count == 2
110+
assert mock_s3_client.get_object.call_count == 2

0 commit comments

Comments
 (0)