107 lines
2.9 KiB
Python
107 lines
2.9 KiB
Python
import os
|
|
import sys
|
|
import tempfile
|
|
from pathlib import Path
|
|
from typing import Optional
|
|
from unittest.mock import patch
|
|
|
|
import pytest
|
|
from conftest import assert_logs
|
|
|
|
from ytdl_sub.cli.entrypoint import main
|
|
from ytdl_sub.cli.output_transaction_log import logger as transaction_logger
|
|
from ytdl_sub.utils.file_handler import FileHandler
|
|
|
|
|
|
@pytest.fixture
|
|
def transaction_log_file_path() -> str:
|
|
# Delete the temp_file on creation
|
|
with tempfile.NamedTemporaryFile() as temp_file:
|
|
pass
|
|
|
|
yield temp_file.name
|
|
|
|
if os.path.isfile(temp_file.name):
|
|
FileHandler.delete(temp_file.name)
|
|
|
|
|
|
@pytest.mark.parametrize("file_transaction_log", [None, "output.log"])
|
|
def test_suppress_transaction_log(
|
|
mock_subscription_download_success,
|
|
default_config_path: Path,
|
|
music_video_subscription_path: Path,
|
|
file_transaction_log: Optional[str],
|
|
) -> None:
|
|
with (
|
|
patch.object(
|
|
sys,
|
|
"argv",
|
|
[
|
|
"ytdl-sub",
|
|
"--config",
|
|
str(default_config_path),
|
|
"sub",
|
|
str(music_video_subscription_path),
|
|
"--suppress-transaction-log",
|
|
]
|
|
+ (["--transaction-log", file_transaction_log] if file_transaction_log else []),
|
|
),
|
|
patch("ytdl_sub.cli.output_transaction_log.output_transaction_log") as mock_transaction_log,
|
|
):
|
|
subscriptions = main()
|
|
|
|
assert subscriptions
|
|
assert mock_transaction_log.call_count == 0
|
|
|
|
|
|
def test_transaction_log_to_file(
|
|
mock_subscription_download_success,
|
|
default_config_path: Path,
|
|
music_video_subscription_path: Path,
|
|
transaction_log_file_path: Path,
|
|
) -> None:
|
|
with patch.object(
|
|
sys,
|
|
"argv",
|
|
[
|
|
"ytdl-sub",
|
|
"--config",
|
|
str(default_config_path),
|
|
"sub",
|
|
str(music_video_subscription_path),
|
|
"--transaction-log",
|
|
str(transaction_log_file_path),
|
|
],
|
|
):
|
|
subscriptions = main()
|
|
assert subscriptions
|
|
|
|
with open(transaction_log_file_path, "r", encoding="utf-8") as transaction_log_file:
|
|
assert transaction_log_file.readlines()[0] == "Transaction log for Rick Astley:\n"
|
|
|
|
|
|
def test_transaction_log_to_logger(
|
|
mock_subscription_download_success,
|
|
default_config_path: Path,
|
|
music_video_subscription_path: Path,
|
|
) -> None:
|
|
with (
|
|
patch.object(
|
|
sys,
|
|
"argv",
|
|
[
|
|
"ytdl-sub",
|
|
"--config",
|
|
str(default_config_path),
|
|
"sub",
|
|
str(music_video_subscription_path),
|
|
],
|
|
),
|
|
assert_logs(
|
|
logger=transaction_logger,
|
|
expected_message="Transaction log for Rick Astley:\n",
|
|
log_level="info",
|
|
),
|
|
):
|
|
subscriptions = main()
|
|
assert subscriptions
|