Add German FSK rating support for NFO files
- Add optional fsk field to TVShowNFO model - Implement TMDB content ratings API integration - Add FSK extraction and mapping (FSK 0/6/12/16/18) - Update XML generation to prefer FSK over MPAA - Add nfo_prefer_fsk_rating config setting - Add 31 comprehensive tests for FSK functionality - All 112 NFO tests passing
This commit is contained in:
@@ -328,3 +328,78 @@ class TestNFOGeneratorEdgeCases:
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
|
||||
assert "<premiered>2020-01-01</premiered>" in xml_string
|
||||
|
||||
|
||||
class TestFSKRatingGeneration:
|
||||
"""Test FSK rating generation in NFO XML."""
|
||||
|
||||
def test_generate_nfo_with_fsk_rating(self):
|
||||
"""Test NFO generation with FSK rating."""
|
||||
nfo = TVShowNFO(
|
||||
title="FSK Show",
|
||||
plot="Test",
|
||||
fsk="FSK 12",
|
||||
mpaa="TV-14"
|
||||
)
|
||||
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
|
||||
# Should use FSK rating when available and preferred (default)
|
||||
assert "<mpaa>FSK 12</mpaa>" in xml_string
|
||||
|
||||
def test_generate_nfo_fsk_preferred_over_mpaa(self):
|
||||
"""Test that FSK is preferred over MPAA when both present."""
|
||||
nfo = TVShowNFO(
|
||||
title="FSK Priority Show",
|
||||
plot="Test",
|
||||
fsk="FSK 16",
|
||||
mpaa="TV-MA"
|
||||
)
|
||||
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
|
||||
# FSK should be in mpaa tag, not TV-MA
|
||||
assert "<mpaa>FSK 16</mpaa>" in xml_string
|
||||
assert "TV-MA" not in xml_string
|
||||
|
||||
def test_generate_nfo_fallback_to_mpaa(self):
|
||||
"""Test fallback to MPAA when FSK not available."""
|
||||
nfo = TVShowNFO(
|
||||
title="MPAA Show",
|
||||
plot="Test",
|
||||
fsk=None,
|
||||
mpaa="TV-PG"
|
||||
)
|
||||
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
|
||||
# Should use MPAA when FSK not available
|
||||
assert "<mpaa>TV-PG</mpaa>" in xml_string
|
||||
|
||||
def test_generate_nfo_with_all_fsk_values(self):
|
||||
"""Test NFO generation with all possible FSK values."""
|
||||
fsk_values = ["FSK 0", "FSK 6", "FSK 12", "FSK 16", "FSK 18"]
|
||||
|
||||
for fsk in fsk_values:
|
||||
nfo = TVShowNFO(
|
||||
title=f"FSK {fsk} Show",
|
||||
plot="Test",
|
||||
fsk=fsk
|
||||
)
|
||||
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
assert f"<mpaa>{fsk}</mpaa>" in xml_string
|
||||
|
||||
def test_generate_nfo_no_rating(self):
|
||||
"""Test NFO generation when neither FSK nor MPAA is available."""
|
||||
nfo = TVShowNFO(
|
||||
title="No Rating Show",
|
||||
plot="Test",
|
||||
fsk=None,
|
||||
mpaa=None
|
||||
)
|
||||
|
||||
xml_string = generate_tvshow_nfo(nfo)
|
||||
|
||||
# mpaa tag should not be present
|
||||
assert "<mpaa>" not in xml_string
|
||||
|
||||
Reference in New Issue
Block a user