Files
backup-tool/tests/unit/test_execution_transitions.py
T

48 lines
1.3 KiB
Python

from __future__ import annotations
import pytest
from backup_tool.execution import TransitionError, transition
@pytest.mark.parametrize(
("current", "target"),
[
("queued", "preparing"),
("queued", "cancelled"),
("queued", "failed"),
("preparing", "running"),
("preparing", "cancelling"),
("preparing", "failed"),
("running", "verifying"),
("running", "cancelling"),
("running", "failed"),
("verifying", "committed"),
("verifying", "failed"),
("cancelling", "cancelled"),
("cancelling", "failed"),
],
)
def test_all_legal_execution_transitions_are_accepted(current: str, target: str) -> None:
assert transition(current, target) == target
@pytest.mark.parametrize(
("current", "target"),
[
("queued", "running"),
("preparing", "queued"),
("running", "preparing"),
("verifying", "cancelling"),
("cancelling", "running"),
("committed", "cancelled"),
("cancelled", "queued"),
("failed", "queued"),
("unknown", "queued"),
],
)
def test_invalid_or_backward_execution_transitions_are_rejected(current: str, target: str) -> None:
with pytest.raises(TransitionError) as raised:
transition(current, target)
assert raised.value.code == "invalid_transition"