fix mocking

This commit is contained in:
jbannon 2022-08-01 21:35:22 +00:00
parent a484679987
commit 5ecb38fd47

View file

@ -1,4 +1,5 @@
import contextlib import contextlib
import logging
import sys import sys
from unittest.mock import patch from unittest.mock import patch
@ -39,25 +40,27 @@ def test_main_success(mock_sys_exit):
def test_main_validation_error(capsys, mock_sys_exit): def test_main_validation_error(capsys, mock_sys_exit):
validation_exception = ValidationException("test") validation_exception = ValidationException("test")
with mock_sys_exit(expected_exit_code=1): with mock_sys_exit(expected_exit_code=1), patch(
with patch("src.ytdl_sub.main._main", side_effect=validation_exception): "src.ytdl_sub.main._main", side_effect=validation_exception
with patch("src.ytdl_sub.main.logger") as mock_logger: ), patch.object(logging.Logger, "error") as mock_logger:
main() main()
assert mock_logger.error.call_count == 1 assert mock_logger.call_count == 1
assert mock_logger.error.call_args.args[0] == validation_exception assert mock_logger.call_args.args[0] == validation_exception
def test_main_uncaught_error(capsys, mock_sys_exit, expected_uncaught_error_message): def test_main_uncaught_error(capsys, mock_sys_exit, expected_uncaught_error_message):
uncaught_error = ValueError("test") uncaught_error = ValueError("test")
with mock_sys_exit(expected_exit_code=1): with mock_sys_exit(expected_exit_code=1), patch(
with patch("src.ytdl_sub.main._main", side_effect=uncaught_error): "src.ytdl_sub.main._main", side_effect=uncaught_error
with patch("src.ytdl_sub.main.logger") as mock_logger: ), patch.object(logging.Logger, "exception") as mock_exception, patch.object(
logging.Logger, "error"
) as mock_error:
main() main()
assert mock_logger.exception.call_count == 1 assert mock_exception.call_count == 1
assert mock_logger.exception.call_args.args[0] == "An uncaught error occurred:" assert mock_exception.call_args.args[0] == "An uncaught error occurred:"
assert mock_logger.error.call_count == 1 assert mock_error.call_count == 1
assert mock_logger.error.call_args.args[0] == expected_uncaught_error_message assert mock_error.call_args.args[0] == expected_uncaught_error_message
assert mock_logger.error.call_args.args[1] == Logger.debug_log_filename() assert mock_error.call_args.args[1] == Logger.debug_log_filename()