Skip to content
Snippets Groups Projects
Commit 444dd52c authored by Valentin Rigal's avatar Valentin Rigal
Browse files

Add tests related to activities update

parent 97fee783
No related branches found
No related tags found
No related merge requests found
Pipeline #78556 passed
......@@ -14,6 +14,23 @@ 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
......@@ -166,24 +183,7 @@ def test_run(
# Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
# Mock elements
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",
},
)
prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
assert mock_elements_worker.is_read_only is False
# Mock exception in process_element
......@@ -230,7 +230,11 @@ def test_run(
def test_run_cache(
monkeypatch, mocker, mock_elements_worker_with_cache, mock_cached_elements, mock_activity_calls,
monkeypatch,
mocker,
mock_elements_worker_with_cache,
mock_cached_elements,
mock_activity_calls,
):
# Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker_with_cache, "configure", lambda: None)
......@@ -246,3 +250,57 @@ def test_run_cache(
mocker.call(elt)
for elt in CachedElement.select()
]
def test_activity_conflict(monkeypatch, responses, mocker, mock_elements_worker):
# Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
# 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(
title="conflict",
status_code=409,
content="Either this activity does not exists or this state is not allowed.",
)
from arkindex_worker.worker import logger
logger.warning = mocker.MagicMock()
mock_elements_worker.run()
assert mock_elements_worker.update_activity.call_args_list == [
mocker.call("1234-deadbeef", ActivityState.Started)
]
assert logger.warning.call_args_list == [
mocker.call(
"Cannot start processing element 1234-deadbeef due to a conflict. "
"Another process could have processed it with the same version already."
)
]
def test_activity_error(monkeypatch, responses, mocker, mock_elements_worker):
# Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
# 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(
"A wild Petilil appears !"
)
from arkindex_worker.worker import logger
logger.error = mocker.MagicMock()
with pytest.raises(SystemExit):
mock_elements_worker.run()
assert mock_elements_worker.update_activity.call_args_list == [
mocker.call("1234-deadbeef", ActivityState.Started)
]
assert logger.error.call_args_list == [
mocker.call("Ran on 1 elements: 0 completed, 1 failed")
]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment