Fix pri lang for rename mode
This commit is contained in:
125
tests/unit/test_cli_rename_only.py
Normal file
125
tests/unit/test_cli_rename_only.py
Normal file
@@ -0,0 +1,125 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
|
||||
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 import cli # noqa: E402
|
||||
|
||||
|
||||
class _FakeMediaDescriptor:
|
||||
def getVideoTracks(self):
|
||||
return []
|
||||
|
||||
def getAudioTracks(self):
|
||||
return []
|
||||
|
||||
def getSubtitleTracks(self):
|
||||
return []
|
||||
|
||||
def getAttachmentTracks(self):
|
||||
return []
|
||||
|
||||
|
||||
class _FakeFileProperties:
|
||||
def __init__(self, context, source_path):
|
||||
self.source_path = source_path
|
||||
|
||||
def getShowId(self):
|
||||
return -1
|
||||
|
||||
def getSeason(self):
|
||||
return -1
|
||||
|
||||
def getEpisode(self):
|
||||
return -1
|
||||
|
||||
def getMediaDescriptor(self):
|
||||
return _FakeMediaDescriptor()
|
||||
|
||||
def getPattern(self):
|
||||
return None
|
||||
|
||||
|
||||
class _FakeShiftedSeasonController:
|
||||
def __init__(self, context):
|
||||
self.context = context
|
||||
|
||||
def shiftSeason(self, show_id, season, episode):
|
||||
return season, episode
|
||||
|
||||
|
||||
class _FakeFfxController:
|
||||
def __init__(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def runJob(self, *args, **kwargs):
|
||||
raise AssertionError("runJob should not be called for --rename-only")
|
||||
|
||||
|
||||
class RenameOnlyCliTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tempdir = tempfile.TemporaryDirectory()
|
||||
self.home_dir = Path(self.tempdir.name) / "home"
|
||||
self.home_dir.mkdir()
|
||||
self.database_path = Path(self.tempdir.name) / "test.db"
|
||||
self.source_dir = Path(self.tempdir.name) / "source"
|
||||
self.source_dir.mkdir()
|
||||
self.output_dir = Path(self.tempdir.name) / "output"
|
||||
self.output_dir.mkdir()
|
||||
self.source_path = self.source_dir / "episode.mkv"
|
||||
self.source_bytes = b"rename-only-source"
|
||||
self.source_path.write_bytes(self.source_bytes)
|
||||
|
||||
def tearDown(self):
|
||||
self.tempdir.cleanup()
|
||||
|
||||
def test_rename_only_moves_source_file_into_output_directory(self):
|
||||
runner = CliRunner()
|
||||
|
||||
with (
|
||||
patch("ffx.file_properties.FileProperties", _FakeFileProperties),
|
||||
patch("ffx.ffx_controller.FfxController", _FakeFfxController),
|
||||
patch(
|
||||
"ffx.shifted_season_controller.ShiftedSeasonController",
|
||||
_FakeShiftedSeasonController,
|
||||
),
|
||||
):
|
||||
result = runner.invoke(
|
||||
cli.ffx,
|
||||
[
|
||||
"--database-file",
|
||||
str(self.database_path),
|
||||
"convert",
|
||||
"--no-tmdb",
|
||||
"--no-pattern",
|
||||
"--rename-only",
|
||||
"--output-directory",
|
||||
str(self.output_dir),
|
||||
str(self.source_path),
|
||||
],
|
||||
env={**os.environ, "HOME": str(self.home_dir)},
|
||||
)
|
||||
|
||||
self.assertEqual(0, result.exit_code, result.output)
|
||||
|
||||
target_path = self.output_dir / "out_episode.mkv"
|
||||
self.assertFalse(self.source_path.exists())
|
||||
self.assertTrue(target_path.exists())
|
||||
self.assertEqual(self.source_bytes, target_path.read_bytes())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
41
tests/unit/test_iso_language.py
Normal file
41
tests/unit/test_iso_language.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from __future__ import annotations
|
||||
|
||||
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.iso_language import IsoLanguage # noqa: E402
|
||||
|
||||
|
||||
class IsoLanguageTests(unittest.TestCase):
|
||||
def test_language_constant_set_covers_iso_639_1_plus_filipino_alias(self):
|
||||
languages = [language for language in IsoLanguage if language is not IsoLanguage.UNDEFINED]
|
||||
|
||||
self.assertEqual(184, len(languages))
|
||||
self.assertEqual(183, len({language.twoLetter() for language in languages}))
|
||||
|
||||
def test_primary_three_letter_code_is_returned_first(self):
|
||||
self.assertEqual("sqi", IsoLanguage.ALBANIAN.threeLetter())
|
||||
self.assertEqual("deu", IsoLanguage.GERMAN.threeLetter())
|
||||
self.assertEqual("cym", IsoLanguage.WELSH.threeLetter())
|
||||
|
||||
def test_secondary_three_letter_codes_still_resolve_to_the_same_language(self):
|
||||
self.assertIs(IsoLanguage.ALBANIAN, IsoLanguage.findThreeLetter("alb"))
|
||||
self.assertIs(IsoLanguage.GERMAN, IsoLanguage.findThreeLetter("ger"))
|
||||
self.assertIs(IsoLanguage.WELSH, IsoLanguage.findThreeLetter("wel"))
|
||||
|
||||
def test_newly_added_languages_and_media_aliases_resolve(self):
|
||||
self.assertIs(IsoLanguage.ASSAMESE, IsoLanguage.find("Assamese"))
|
||||
self.assertIs(IsoLanguage.YORUBA, IsoLanguage.findThreeLetter("yor"))
|
||||
self.assertIs(IsoLanguage.FILIPINO, IsoLanguage.findThreeLetter("fil"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user