98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
from __future__ import annotations
|
|
|
|
import logging
|
|
from pathlib import Path
|
|
import sys
|
|
import unittest
|
|
|
|
|
|
SRC_ROOT = Path(__file__).resolve().parents[2] / "src"
|
|
|
|
if str(SRC_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(SRC_ROOT))
|
|
|
|
|
|
from ffx.constants import (
|
|
DEFAULT_SHOW_INDEX_EPISODE_DIGITS,
|
|
DEFAULT_SHOW_INDEX_SEASON_DIGITS,
|
|
DEFAULT_SHOW_INDICATOR_EPISODE_DIGITS,
|
|
DEFAULT_SHOW_INDICATOR_SEASON_DIGITS,
|
|
)
|
|
from ffx.helper import getEpisodeFileBasename
|
|
from ffx.show_descriptor import ShowDescriptor
|
|
|
|
|
|
class StaticConfig:
|
|
def __init__(self, data: dict | None = None):
|
|
self._data = data or {}
|
|
|
|
def getData(self):
|
|
return self._data
|
|
|
|
|
|
class ShowDescriptorDefaultTests(unittest.TestCase):
|
|
def make_context(self, config_data: dict | None = None) -> dict:
|
|
logger = logging.getLogger("ffx-test-show-descriptor-defaults")
|
|
logger.handlers = []
|
|
logger.addHandler(logging.NullHandler())
|
|
return {"config": StaticConfig(config_data), "logger": logger}
|
|
|
|
def test_show_descriptor_uses_config_defaults_when_context_is_present(self):
|
|
descriptor = ShowDescriptor(
|
|
context=self.make_context(
|
|
{
|
|
"defaultIndexSeasonDigits": "1",
|
|
"defaultIndexEpisodeDigits": "3",
|
|
"defaultIndicatorSeasonDigits": "3",
|
|
"defaultIndicatorEpisodeDigits": "4",
|
|
}
|
|
),
|
|
id=1,
|
|
name="Configured Show",
|
|
year=2024,
|
|
)
|
|
|
|
self.assertEqual(1, descriptor.getIndexSeasonDigits())
|
|
self.assertEqual(3, descriptor.getIndexEpisodeDigits())
|
|
self.assertEqual(3, descriptor.getIndicatorSeasonDigits())
|
|
self.assertEqual(4, descriptor.getIndicatorEpisodeDigits())
|
|
|
|
def test_show_descriptor_without_context_uses_shared_constants(self):
|
|
descriptor = ShowDescriptor(id=1, name="Default Show", year=2024)
|
|
|
|
self.assertEqual(DEFAULT_SHOW_INDEX_SEASON_DIGITS, descriptor.getIndexSeasonDigits())
|
|
self.assertEqual(DEFAULT_SHOW_INDEX_EPISODE_DIGITS, descriptor.getIndexEpisodeDigits())
|
|
self.assertEqual(
|
|
DEFAULT_SHOW_INDICATOR_SEASON_DIGITS,
|
|
descriptor.getIndicatorSeasonDigits(),
|
|
)
|
|
self.assertEqual(
|
|
DEFAULT_SHOW_INDICATOR_EPISODE_DIGITS,
|
|
descriptor.getIndicatorEpisodeDigits(),
|
|
)
|
|
|
|
def test_episode_basename_uses_configured_digit_defaults_when_omitted(self):
|
|
basename = getEpisodeFileBasename(
|
|
"Configured Show",
|
|
"Episode Name",
|
|
2,
|
|
7,
|
|
context=self.make_context(
|
|
{
|
|
"defaultIndexSeasonDigits": 1,
|
|
"defaultIndexEpisodeDigits": 3,
|
|
"defaultIndicatorSeasonDigits": 3,
|
|
"defaultIndicatorEpisodeDigits": 4,
|
|
}
|
|
),
|
|
)
|
|
|
|
self.assertEqual(
|
|
"Configured Show - 2007 Episode Name - S002E0007",
|
|
basename,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|