Fix NFO folder naming to include year
- 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
This commit is contained in:
94
tests/unit/test_serie_folder_with_year.py
Normal file
94
tests/unit/test_serie_folder_with_year.py
Normal file
@@ -0,0 +1,94 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user