Skip to content

Commit 5f1744d

Browse files
committed
Add tests
1 parent cae4a50 commit 5f1744d

1 file changed

Lines changed: 60 additions & 0 deletions

File tree

app/tests/components_tests/test_tasks.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1681,3 +1681,63 @@ def test_parse_endpoint_invocation_outputs(settings):
16811681
civ = invocation.outputs.first()
16821682

16831683
assert civ.value == "test output content"
1684+
1685+
1686+
@pytest.mark.django_db
1687+
def test_parse_endpoint_invocation_outputs_failure(mocker):
1688+
invocation = InvocationFactory(
1689+
status=InvocationStatusChoices.EXECUTED,
1690+
)
1691+
mocker.patch.object(
1692+
EndpointOrchestrator,
1693+
"get_outputs",
1694+
side_effect=Exception,
1695+
)
1696+
1697+
parse_endpoint_invocation_outputs(**invocation.task_kwargs)
1698+
1699+
invocation.refresh_from_db()
1700+
1701+
assert invocation.status == InvocationStatusChoices.FAILURE
1702+
assert invocation.error_message == SystemErrorMessages.UNEXPECTED_ERROR
1703+
1704+
1705+
@pytest.mark.parametrize(
1706+
"status",
1707+
set(InvocationStatusChoices).difference(
1708+
[InvocationStatusChoices.EXECUTED, InvocationStatusChoices.CANCELLED]
1709+
),
1710+
)
1711+
@pytest.mark.django_db
1712+
def test_parse_endpoint_invocation_outputs_wrong_state_raises(mocker, status):
1713+
invocation = InvocationFactory(status=status)
1714+
mock_get_outputs = mocker.patch.object(
1715+
EndpointOrchestrator,
1716+
"get_outputs",
1717+
)
1718+
1719+
with pytest.raises(
1720+
RuntimeError, match="Invocation is not ready for output parsing"
1721+
):
1722+
parse_endpoint_invocation_outputs(**invocation.task_kwargs)
1723+
invocation.refresh_from_db()
1724+
1725+
mock_get_outputs.assert_not_called()
1726+
assert invocation.status == status
1727+
assert invocation.outputs.count() == 0
1728+
1729+
1730+
@pytest.mark.django_db
1731+
def test_parse_endpoint_invocation_outputs_cancelled_skipped(mocker):
1732+
invocation = InvocationFactory(status=InvocationStatusChoices.CANCELLED)
1733+
mock_get_outputs = mocker.patch.object(
1734+
EndpointOrchestrator,
1735+
"get_outputs",
1736+
)
1737+
1738+
parse_endpoint_invocation_outputs(**invocation.task_kwargs)
1739+
invocation.refresh_from_db()
1740+
1741+
mock_get_outputs.assert_not_called()
1742+
assert invocation.status == InvocationStatusChoices.CANCELLED
1743+
assert invocation.outputs.count() == 0

0 commit comments

Comments
 (0)