- Add Serie.ensure_folder_with_year() method to ensure folder names include year - Update all NFO API endpoints to call ensure_folder_with_year() before operations - Folder format is now 'Name (Year)' when year is available - Add comprehensive tests for ensure_folder_with_year() method - All 5 tests passing
95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
"""Tests for Serie.ensure_folder_with_year() method."""
|
|
|
|
import pytest
|
|
from src.core.entities.series import Serie
|
|
|
|
|
|
class TestSerieEnsureFolderWithYear:
|
|
"""Test suite for ensure_folder_with_year method."""
|
|
|
|
def test_ensure_folder_with_year_adds_year(self):
|
|
"""Test that ensure_folder_with_year adds year to folder name."""
|
|
serie = Serie(
|
|
key="perfect-blue",
|
|
name="Perfect Blue",
|
|
site="aniworld.to",
|
|
folder="Perfect Blue",
|
|
episodeDict={1: [1, 2, 3]},
|
|
year=1997
|
|
)
|
|
|
|
result = serie.ensure_folder_with_year()
|
|
|
|
assert result == "Perfect Blue (1997)"
|
|
assert serie.folder == "Perfect Blue (1997)"
|
|
|
|
def test_ensure_folder_with_year_already_has_year(self):
|
|
"""Test that ensure_folder_with_year doesn't duplicate year."""
|
|
serie = Serie(
|
|
key="blue-exorcist",
|
|
name="Blue Exorcist",
|
|
site="aniworld.to",
|
|
folder="Blue Exorcist (2011)",
|
|
episodeDict={1: [1, 2, 3]},
|
|
year=2011
|
|
)
|
|
|
|
result = serie.ensure_folder_with_year()
|
|
|
|
assert result == "Blue Exorcist (2011)"
|
|
assert serie.folder == "Blue Exorcist (2011)"
|
|
|
|
def test_ensure_folder_with_year_no_year_available(self):
|
|
"""Test that ensure_folder_with_year returns folder unchanged if no year."""
|
|
serie = Serie(
|
|
key="unknown-anime",
|
|
name="Unknown Anime",
|
|
site="aniworld.to",
|
|
folder="Unknown Anime",
|
|
episodeDict={1: [1, 2, 3]},
|
|
year=None
|
|
)
|
|
|
|
result = serie.ensure_folder_with_year()
|
|
|
|
assert result == "Unknown Anime"
|
|
assert serie.folder == "Unknown Anime"
|
|
|
|
def test_ensure_folder_with_year_sanitizes_name(self):
|
|
"""Test that ensure_folder_with_year uses sanitized_folder property."""
|
|
serie = Serie(
|
|
key="attack-on-titan",
|
|
name="Attack on Titan: Final Season",
|
|
site="aniworld.to",
|
|
folder="Attack on Titan Final", # Old folder without year
|
|
episodeDict={1: [1, 2, 3]},
|
|
year=2020
|
|
)
|
|
|
|
result = serie.ensure_folder_with_year()
|
|
|
|
# Should use sanitized version of name_with_year
|
|
assert "(2020)" in result
|
|
assert serie.folder == result
|
|
# Colon should be removed by sanitization
|
|
assert ":" not in result
|
|
|
|
def test_ensure_folder_with_year_updates_folder_property(self):
|
|
"""Test that folder property is updated when year is added."""
|
|
serie = Serie(
|
|
key="dororo",
|
|
name="Dororo",
|
|
site="aniworld.to",
|
|
folder="Dororo",
|
|
episodeDict={1: [1, 2, 3]},
|
|
year=2019
|
|
)
|
|
|
|
original_folder = serie.folder
|
|
result = serie.ensure_folder_with_year()
|
|
|
|
assert original_folder == "Dororo"
|
|
assert result == "Dororo (2019)"
|
|
assert serie.folder == "Dororo (2019)"
|
|
assert serie.folder != original_folder
|