diff --git a/tests/conftest.py b/tests/conftest.py index 922fc3e24766768d343bd05a7baca3bd279a7994..5a4596c6f95e32b3442f29895dab3ad994e191da 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -224,6 +224,27 @@ def mock_elements_worker(monkeypatch, mock_config_api): return worker +@pytest.fixture +def mock_elements_worker_with_list(monkeypatch, responses, mock_elements_worker): + """ + Mock a worker instance to list and retrieve a single element + """ + monkeypatch.setattr( + mock_elements_worker, "list_elements", lambda: ["1234-deadbeef"] + ) + responses.add( + responses.GET, + "http://testserver/api/v1/element/1234-deadbeef/", + status=200, + json={ + "id": "1234-deadbeef", + "type": "page", + "name": "Test Page n°1", + }, + ) + return mock_elements_worker + + @pytest.fixture def mock_base_worker_with_cache(mocker, monkeypatch, mock_config_api): """Build a BaseWorker using SQLite cache, also mocking a PONOS_TASK""" diff --git a/tests/test_elements_worker/test_worker.py b/tests/test_elements_worker/test_worker.py index 5a0ca6ad7e49977e14273a92f61f767f17a7763a..6eb2859331c482e4c6bfe374f951dcf7dcc74526 100644 --- a/tests/test_elements_worker/test_worker.py +++ b/tests/test_elements_worker/test_worker.py @@ -14,23 +14,6 @@ TEST_VERSION_ID = "test_123" TEST_SLUG = "some_slug" -def prepare_single_worker_element(responses, monkeypatch, worker): - """ - Mock a worker instance to list and retrieve a single element - """ - monkeypatch.setattr(worker, "list_elements", lambda: ["1234-deadbeef"]) - responses.add( - responses.GET, - "http://testserver/api/v1/element/1234-deadbeef/", - status=200, - json={ - "id": "1234-deadbeef", - "type": "page", - "name": "Test Page n°1", - }, - ) - - def test_get_worker_version(fake_dummy_worker): api_client = fake_dummy_worker.api_client @@ -187,7 +170,7 @@ def test_update_call(responses, mock_elements_worker, mock_process_api): ) def test_run( monkeypatch, - mock_elements_worker, + mock_elements_worker_with_list, responses, process_exception, final_state, @@ -195,10 +178,8 @@ def test_run( ): """Check the normal runtime sends 2 API calls to update activity""" # Disable second configure call from run() - monkeypatch.setattr(mock_elements_worker, "configure", lambda: None) - - prepare_single_worker_element(responses, monkeypatch, mock_elements_worker) - assert mock_elements_worker.is_read_only is False + monkeypatch.setattr(mock_elements_worker_with_list, "configure", lambda: None) + assert mock_elements_worker_with_list.is_read_only is False # Mock exception in process_element if process_exception: @@ -206,14 +187,14 @@ def test_run( def _err(): raise process_exception - monkeypatch.setattr(mock_elements_worker, "process_element", _err) + monkeypatch.setattr(mock_elements_worker_with_list, "process_element", _err) # The worker stops because all elements failed ! with pytest.raises(SystemExit): - mock_elements_worker.run() + mock_elements_worker_with_list.run() else: # Simply run the process - mock_elements_worker.run() + mock_elements_worker_with_list.run() assert len(responses.calls) == len(BASE_API_CALLS) + 3 assert [ @@ -266,14 +247,15 @@ def test_run_cache( ] -def test_activity_conflict(monkeypatch, responses, mocker, mock_elements_worker): +def test_activity_conflict( + monkeypatch, responses, mocker, mock_elements_worker_with_list +): # Disable second configure call from run() - monkeypatch.setattr(mock_elements_worker, "configure", lambda: None) - prepare_single_worker_element(responses, monkeypatch, mock_elements_worker) + monkeypatch.setattr(mock_elements_worker_with_list, "configure", lambda: None) # Mock a "normal" conflict during in activity update, which returns the Exception - mock_elements_worker.update_activity = mocker.MagicMock() - mock_elements_worker.update_activity.return_value = ErrorResponse( + mock_elements_worker_with_list.update_activity = mocker.MagicMock() + mock_elements_worker_with_list.update_activity.return_value = ErrorResponse( title="conflict", status_code=409, content="Either this activity does not exists or this state is not allowed.", @@ -282,9 +264,9 @@ def test_activity_conflict(monkeypatch, responses, mocker, mock_elements_worker) logger.warning = mocker.MagicMock() - mock_elements_worker.run() + mock_elements_worker_with_list.run() - assert mock_elements_worker.update_activity.call_args_list == [ + assert mock_elements_worker_with_list.update_activity.call_args_list == [ mocker.call("1234-deadbeef", ActivityState.Started) ] assert logger.warning.call_args_list == [ @@ -295,14 +277,13 @@ def test_activity_conflict(monkeypatch, responses, mocker, mock_elements_worker) ] -def test_activity_error(monkeypatch, responses, mocker, mock_elements_worker): +def test_activity_error(monkeypatch, responses, mocker, mock_elements_worker_with_list): # Disable second configure call from run() - monkeypatch.setattr(mock_elements_worker, "configure", lambda: None) - prepare_single_worker_element(responses, monkeypatch, mock_elements_worker) + monkeypatch.setattr(mock_elements_worker_with_list, "configure", lambda: None) # Mock a "normal" conflict during in activity update, which returns the Exception - mock_elements_worker.update_activity = mocker.MagicMock() - mock_elements_worker.update_activity.return_value = Exception( + mock_elements_worker_with_list.update_activity = mocker.MagicMock() + mock_elements_worker_with_list.update_activity.return_value = Exception( "A wild Petilil appears !" ) from arkindex_worker.worker import logger @@ -310,9 +291,9 @@ def test_activity_error(monkeypatch, responses, mocker, mock_elements_worker): logger.error = mocker.MagicMock() with pytest.raises(SystemExit): - mock_elements_worker.run() + mock_elements_worker_with_list.run() - assert mock_elements_worker.update_activity.call_args_list == [ + assert mock_elements_worker_with_list.update_activity.call_args_list == [ mocker.call("1234-deadbeef", ActivityState.Started) ] assert logger.error.call_args_list == [