Skip to content
Snippets Groups Projects
Commit 8f1d1f08 authored by Valentin Rigal's avatar Valentin Rigal Committed by Bastien Abadie
Browse files

Add tests related to activities update

parent 1d13088e
No related branches found
No related tags found
No related merge requests found
Pipeline #78592 passed
...@@ -14,6 +14,23 @@ TEST_VERSION_ID = "test_123" ...@@ -14,6 +14,23 @@ TEST_VERSION_ID = "test_123"
TEST_SLUG = "some_slug" 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): def test_get_worker_version(fake_dummy_worker):
api_client = fake_dummy_worker.api_client api_client = fake_dummy_worker.api_client
...@@ -180,24 +197,7 @@ def test_run( ...@@ -180,24 +197,7 @@ def test_run(
# Disable second configure call from run() # Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker, "configure", lambda: None) monkeypatch.setattr(mock_elements_worker, "configure", lambda: None)
# Mock elements prepare_single_worker_element(responses, monkeypatch, mock_elements_worker)
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",
},
)
assert mock_elements_worker.is_read_only is False assert mock_elements_worker.is_read_only is False
# Mock exception in process_element # Mock exception in process_element
...@@ -244,7 +244,11 @@ def test_run( ...@@ -244,7 +244,11 @@ def test_run(
def test_run_cache( 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() # Disable second configure call from run()
monkeypatch.setattr(mock_elements_worker_with_cache, "configure", lambda: None) monkeypatch.setattr(mock_elements_worker_with_cache, "configure", lambda: None)
...@@ -260,3 +264,57 @@ def test_run_cache( ...@@ -260,3 +264,57 @@ def test_run_cache(
mocker.call(elt) mocker.call(elt)
for elt in CachedElement.select() 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