calibre: tests: Use common fixtures for testing actions module

Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
This commit is contained in:
Sunil Mohan Adapa 2021-09-20 20:39:35 -07:00 committed by Veiko Aasa
parent 320729413d
commit c28d3eea2f
No known key found for this signature in database
GPG Key ID: 478539CAE680674E

View File

@ -3,36 +3,19 @@
Test module for calibre actions. Test module for calibre actions.
""" """
import imp
import json import json
import pathlib import pathlib
from unittest.mock import call, patch from unittest.mock import call, patch
import pytest import pytest
actions_name = 'calibre'
def _action_file():
"""Return the path to the 'calibre' actions file."""
current_directory = pathlib.Path(__file__).parent
return str(current_directory / '..' / '..' / '..' / '..' / 'actions' /
'calibre')
actions = imp.load_source('calibre', _action_file()) @pytest.fixture(autouse=True)
def fixture_libraries_path(actions_module, tmpdir):
"""Set the libraries path in the actions module."""
@pytest.fixture(name='call_action') actions_module.LIBRARIES_PATH = pathlib.Path(str(tmpdir))
def fixture_call_action(tmpdir, capsys):
"""Run actions with custom root path."""
def _call_action(args, **kwargs):
actions.LIBRARIES_PATH = pathlib.Path(str(tmpdir))
with patch('argparse._sys.argv', ['calibre'] + args):
actions.main()
captured = capsys.readouterr()
return captured.out
return _call_action
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -61,10 +44,10 @@ def test_list_libraries(call_action):
@patch('shutil.chown') @patch('shutil.chown')
def test_create_library(chown, call_action): def test_create_library(chown, call_action, actions_module):
"""Test creating a library.""" """Test creating a library."""
call_action(['create-library', 'TestLibrary']) call_action(['create-library', 'TestLibrary'])
library = actions.LIBRARIES_PATH / 'TestLibrary' library = actions_module.LIBRARIES_PATH / 'TestLibrary'
assert (library / 'metadata.db').exists() assert (library / 'metadata.db').exists()
assert library.stat().st_mode == 0o40755 assert library.stat().st_mode == 0o40755
expected_output = {'libraries': ['TestLibrary']} expected_output = {'libraries': ['TestLibrary']}