Files
life-echo/api/tests/test_memoir_image_settings.py
2026-03-19 14:36:40 +08:00

45 lines
1.5 KiB
Python

import os
import unittest
from unittest.mock import patch
from app.features.memoir.memoir_images.settings import (
DEFAULT_LIBLIB_TEMPLATE_UUID,
MemoirImageSettings,
)
class MemoirImageSettingsTest(unittest.TestCase):
@patch.dict(
os.environ,
{
"MEMOIR_IMAGE_MAX_PER_CHAPTER": "not-an-int",
"MEMOIR_IMAGE_CHARS_PER_EXTRA": "bad-extra",
"MEMOIR_IMAGE_MAX_CAP": "bad-cap",
"MEMOIR_IMAGE_POLL_INTERVAL": "bad",
"MEMOIR_IMAGE_MAX_ATTEMPTS": "oops",
},
clear=False,
)
def test_from_env_falls_back_to_defaults_for_invalid_integers(self):
settings = MemoirImageSettings.from_env()
self.assertEqual(settings.max_per_chapter, 2)
self.assertEqual(settings.chars_per_extra_image, 1500)
self.assertEqual(settings.max_images_cap, 8)
self.assertEqual(settings.poll_interval_seconds, 3)
self.assertEqual(settings.max_attempts, 60)
@patch.dict(os.environ, {}, clear=False)
def test_from_env_uses_shared_template_uuid_default(self):
with patch.dict(os.environ, {"LIBLIB_TEMPLATE_UUID": ""}, clear=False):
settings = MemoirImageSettings.from_env()
self.assertEqual(settings.liblib_template_uuid, DEFAULT_LIBLIB_TEMPLATE_UUID)
def test_effective_max_images_never_drops_below_base_max_per_chapter(self):
settings = MemoirImageSettings(
enabled=True, max_per_chapter=2, max_images_cap=1
)
self.assertEqual(settings.effective_max_images(0), 2)