summaryrefslogtreecommitdiff
path: root/tests/test_subscleaner.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_subscleaner.py')
-rw-r--r--tests/test_subscleaner.py82
1 files changed, 75 insertions, 7 deletions
diff --git a/tests/test_subscleaner.py b/tests/test_subscleaner.py
index 73e7453..6172ff8 100644
--- a/tests/test_subscleaner.py
+++ b/tests/test_subscleaner.py
@@ -3,9 +3,18 @@
from io import StringIO
from unittest.mock import patch
+import pysrt
import pytest
-from src.subscleaner.subscleaner import ads_in_line, main, process_file
+from src.subscleaner.subscleaner import (
+ ads_in_line,
+ detect_encoding,
+ is_already_processed,
+ main,
+ process_file,
+ process_files,
+ remove_ads,
+)
@pytest.fixture
@@ -51,6 +60,50 @@ def test_ads_in_line(line, expected):
assert ads_in_line(line) is expected
+def test_is_already_processed(tmpdir):
+ """
+ Test the is_already_processed function.
+
+ Args:
+ tmpdir (pytest.fixture): A temporary directory for creating the sample SRT file.
+ """
+ file_path = create_sample_srt_file(tmpdir, "")
+ with patch("src.subscleaner.subscleaner.os.path.getctime", return_value=0):
+ assert is_already_processed(file_path) is True
+
+ with patch("src.subscleaner.subscleaner.os.path.getctime", return_value=9999999999):
+ assert is_already_processed(file_path) is False
+
+
+def test_detect_encoding(tmpdir, sample_srt_content):
+ """
+ Test the detect_encoding function.
+
+ Args:
+ tmpdir (pytest.fixture): A temporary directory for creating the sample SRT file.
+ sample_srt_content (str): The sample SRT content.
+ """
+ file_path = create_sample_srt_file(tmpdir, sample_srt_content)
+ assert detect_encoding(file_path) == "ascii"
+
+
+def test_remove_ads(sample_srt_content):
+ """
+ Test the remove_ads function.
+
+ Args:
+ sample_srt_content (str): The sample SRT content.
+ """
+ subs = pysrt.from_string(sample_srt_content)
+ subs_expected_ammount = 2
+ assert remove_ads(subs) is True
+ assert len(subs) == subs_expected_ammount
+
+ subs = pysrt.from_string("1\n00:00:01,000 --> 00:00:03,000\nThis is a sample subtitle.")
+ assert remove_ads(subs) is False
+ assert len(subs) == 1
+
+
def test_process_file_no_modification(tmpdir, sample_srt_content):
"""
Test the process_file function when the file does not require modification.
@@ -60,7 +113,7 @@ def test_process_file_no_modification(tmpdir, sample_srt_content):
sample_srt_content (str): The sample SRT content.
"""
file_path = create_sample_srt_file(tmpdir, sample_srt_content)
- with patch("src.subscleaner.subscleaner.os.path.getctime", return_value=0):
+ with patch("src.subscleaner.subscleaner.is_already_processed", return_value=True):
assert process_file(file_path) is False
@@ -73,7 +126,7 @@ def test_process_file_with_modification(tmpdir, sample_srt_content):
sample_srt_content (str): The sample SRT content.
"""
file_path = create_sample_srt_file(tmpdir, sample_srt_content)
- with patch("src.subscleaner.subscleaner.os.path.getctime", return_value=9999999999):
+ with patch("src.subscleaner.subscleaner.is_already_processed", return_value=False):
assert process_file(file_path) is True
@@ -88,6 +141,21 @@ def test_process_file_error(tmpdir):
assert process_file(str(file_path)) is False
+def test_process_files(tmpdir, sample_srt_content):
+ """
+ Test the process_files function.
+
+ Args:
+ tmpdir (pytest.fixture): A temporary directory for creating the sample SRT files.
+ sample_srt_content (str): The sample SRT content.
+ """
+ file_path1 = create_sample_srt_file(tmpdir, sample_srt_content)
+ file_path2 = create_sample_srt_file(tmpdir, "1\n00:00:01,000 --> 00:00:03,000\nThis is a sample subtitle.")
+ with patch("src.subscleaner.subscleaner.process_file", side_effect=[True, False]):
+ modified_files = process_files([file_path1, file_path2])
+ assert modified_files == [file_path1]
+
+
def test_main_no_modification(tmpdir, sample_srt_content):
"""
Test the main function when no files require modification.
@@ -99,10 +167,10 @@ def test_main_no_modification(tmpdir, sample_srt_content):
file_path = create_sample_srt_file(tmpdir, sample_srt_content)
with (
patch("sys.stdin", StringIO(file_path)),
- patch("src.subscleaner.subscleaner.process_file", return_value=False) as mock_process_file,
+ patch("src.subscleaner.subscleaner.process_files", return_value=[]) as mock_process_files,
):
main()
- mock_process_file.assert_called_once_with(file_path)
+ mock_process_files.assert_called_once_with([file_path])
def test_main_with_modification(tmpdir, sample_srt_content):
@@ -116,7 +184,7 @@ def test_main_with_modification(tmpdir, sample_srt_content):
file_path = create_sample_srt_file(tmpdir, sample_srt_content)
with (
patch("sys.stdin", StringIO(file_path)),
- patch("src.subscleaner.subscleaner.process_file", return_value=True) as mock_process_file,
+ patch("src.subscleaner.subscleaner.process_files", return_value=[file_path]) as mock_process_files,
):
main()
- mock_process_file.assert_called_once_with(file_path)
+ mock_process_files.assert_called_once_with([file_path])