1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-06-10 12:22:27 +03:00

JournalLock: Fix update_lock() with an extra mock

* update_lock() wants to, potentially, invoke
  JournalLock.JournalAlreadyLocked() instance for a tkinter pop-up.
  We do *not* want to mock all of that, so monkeypatch a mock so that in
  the 'test PASSED' case this just works.
This commit is contained in:
Athanasius 2021-03-24 16:41:56 +00:00
parent 8c74d46368
commit baca42f06e

View File

@ -120,7 +120,7 @@ class TestJournalLock:
def get_str(key: str, *, default: str = None) -> str: def get_str(key: str, *, default: str = None) -> str:
"""Mock config.*Config get_str to provide fake journaldir.""" """Mock config.*Config get_str to provide fake journaldir."""
if key == 'journaldir': if key == 'journaldir':
return tmpdir_factory.mktemp() return tmpdir_factory.mktemp("changing")
print('Other key, calling up ...') print('Other key, calling up ...')
return config.get_str(key) # Call the non-mocked return config.get_str(key) # Call the non-mocked
@ -129,6 +129,17 @@ class TestJournalLock:
m.setattr(config, "get_str", get_str) m.setattr(config, "get_str", get_str)
yield tmpdir_factory yield tmpdir_factory
@pytest.fixture
def mock_journalalreadylocked(self, monkeypatch: _pytest_monkeypatch) -> JournalLock:
"""Fixture to mock JournalAlreadyLocked in JournalLock instance."""
class MockJournalAlreadyLocked:
def __init__(self, parent, callback) -> None:
pass
with monkeypatch.context() as m:
m.setattr(JournalLock, "JournalAlreadyLocked", MockJournalAlreadyLocked)
yield
########################################################################### ###########################################################################
# Tests against JournalLock.__init__() # Tests against JournalLock.__init__()
def test_journal_lock_init(self, mock_journaldir: py_path_local_LocalPath): def test_journal_lock_init(self, mock_journaldir: py_path_local_LocalPath):
@ -295,7 +306,10 @@ class TestJournalLock:
########################################################################### ###########################################################################
# Tests against JournalLock.update_lock() # Tests against JournalLock.update_lock()
def test_update_lock(self, mock_journaldir_changing: py_path_local_LocalPath): def test_update_lock(
self,
mock_journaldir_changing: py_path_local_LocalPath,
mock_journalalreadylocked):
""" """
Test JournalLock.update_lock(). Test JournalLock.update_lock().
@ -312,6 +326,6 @@ class TestJournalLock:
# Now store the 'current' journaldir for reference and attempt # Now store the 'current' journaldir for reference and attempt
# to update to a new one. # to update to a new one.
old_journaldir = jlock.journal_dir old_journaldir = jlock.journal_dir
jlock.update_lock() jlock.update_lock(None)
assert jlock.journaldir != old_journaldir assert jlock.journal_dir != old_journaldir
assert jlock.locked is True assert jlock.locked is True