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.helper import (  # noqa: E402
    filterFilename,
    formatRichColor,
    removeRichColor,
    substituteTmdbFilename,
)


class HelperTests(unittest.TestCase):
    def test_filter_filename_replaces_and_removes_problem_characters(self):
        self.assertEqual(
            "A-B;C#",
            filterFilename(" A/B:C*'?♥’ "),
        )

    def test_substitute_tmdb_filename_removes_filler_marker(self):
        self.assertEqual(
            "Episode Name",
            substituteTmdbFilename("Episode Name (*)"),
        )

    def test_substitute_tmdb_filename_rewrites_single_episode_suffix(self):
        self.assertEqual(
            "Episode Name Teil 2",
            substituteTmdbFilename("Episode Name (2)"),
        )

    def test_substitute_tmdb_filename_rewrites_episode_range_suffix(self):
        self.assertEqual(
            "Episode Name Teil 2-3",
            substituteTmdbFilename("Episode Name (2/3)"),
        )

    def test_remove_rich_color_returns_inner_text(self):
        self.assertEqual(
            "value",
            removeRichColor(formatRichColor("value", "green")),
        )

    def test_remove_rich_color_leaves_plain_text_unchanged(self):
        self.assertEqual(
            "plain text",
            removeRichColor("plain text"),
        )


if __name__ == "__main__":
    unittest.main()
