45 lines
1.5 KiB
Python
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)
|