Files
life-echo/api/tests/test_chapter_cover_enqueue_redis.py

77 lines
2.0 KiB
Python
Raw Permalink Normal View History

import pytest
from app.tasks import chapter_cover_enqueue as enqueue_mod
def test_chapter_cover_enqueue_reuses_sync_redis_client(
monkeypatch: pytest.MonkeyPatch,
) -> None:
class FakeRedis:
def __init__(self) -> None:
self.set_calls = 0
def set(self, *args, **kwargs):
self.set_calls += 1
return True
def delete(self, key: str) -> None:
return None
shared_client = FakeRedis()
def fake_get_sync_redis(*, decode_responses: bool):
assert decode_responses is True
return shared_client
class Chapter:
category = "childhood"
cover_asset_id = None
story_links = [object()]
images = []
class FakeCoverTask:
def delay(self, chapter_id: str) -> None:
return None
monkeypatch.setattr(enqueue_mod, "get_sync_redis", fake_get_sync_redis)
monkeypatch.setattr(
enqueue_mod,
"_load_chapter_for_enqueue_sync",
lambda chapter_id: Chapter(),
)
monkeypatch.setattr(
enqueue_mod,
"chapter_has_story_links",
lambda chapter: True,
)
monkeypatch.setattr(
enqueue_mod,
"effective_chapter_markdown_for_cover_gates",
lambda chapter: "body",
)
monkeypatch.setattr(
enqueue_mod,
"strip_image_placeholders",
lambda text: text,
)
monkeypatch.setattr(
enqueue_mod,
"chapter_eligible_for_cover_by_inline_body_image_count",
lambda chapter, markdown: True,
)
monkeypatch.setattr(
enqueue_mod,
"primary_chapter_memoir_image",
lambda chapter: None,
)
import app.tasks.chapter_cover_tasks as cover_tasks
monkeypatch.setattr(cover_tasks, "generate_chapter_cover", FakeCoverTask())
ok = enqueue_mod.try_enqueue_generate_chapter_cover("chapter-1", source="http")
assert ok is True
assert shared_client.set_calls == 1
enqueue_mod.try_enqueue_generate_chapter_cover("chapter-2", source="http")
assert shared_client.set_calls == 2