Skip to content

task_status_mock

Scope: function | Returns: None

The task_status_mock fixture replaces the internal task status retrieval with a mock. By default each status lookup returns a Status in the STARTED state. The returned status can be controlled via indirect parametrization.

Basic usage

While the fixture is active, any status lookup — for example through lime_task.TaskStatusService — returns a Status in the STARTED state:

import lime_task

def test_task_status_is_started(task_status_mock, lime_app):
    status = lime_task.TaskStatusService(lime_app.id).get("some-task-id")

    assert status.status == lime_task.STARTED

Parametrizing the result

Pass a FakeTaskResult to control what status is returned:

import lime_task
from lime_test.common.helpers import FakeTaskResult

@pytest.mark.parametrize(
    "task_status_mock",
    [FakeTaskResult(lime_task.SUCCESS, 42)],
    indirect=True,
)
def test_task_status_succeeds(task_status_mock, lime_app):
    status = lime_task.TaskStatusService(lime_app.id).get("some-task-id")

    assert status.status == lime_task.SUCCESS
    assert status.result == 42

Parametrizing a sequence of results

Each successive status lookup returns the next result in the sequence:

@pytest.mark.parametrize(
    "task_status_mock",
    [(FakeTaskResult(lime_task.SUCCESS, 42), FakeTaskResult(lime_task.FAILURE))],
    indirect=True,
)
def test_second_lookup_fails(task_status_mock, lime_app):
    service = lime_task.TaskStatusService(lime_app.id)

    first = service.get("some-task-id")
    second = service.get("some-task-id")

    assert first.status == lime_task.SUCCESS
    assert second.status == lime_task.FAILURE