diff --git a/api/segments/tasks.py b/api/segments/tasks.py index f9cc34fd25aa..72a759ea7327 100644 --- a/api/segments/tasks.py +++ b/api/segments/tasks.py @@ -11,7 +11,10 @@ @register_task_handler() def delete_segment(segment_id: int) -> None: - Segment.objects.get(pk=segment_id).delete() + try: + Segment.objects.get(pk=segment_id).delete() + except Segment.DoesNotExist: + pass @register_task_handler() diff --git a/api/tests/unit/segments/test_unit_segments_tasks.py b/api/tests/unit/segments/test_unit_segments_tasks.py new file mode 100644 index 000000000000..f4a4a486d7db --- /dev/null +++ b/api/tests/unit/segments/test_unit_segments_tasks.py @@ -0,0 +1,40 @@ +from unittest.mock import Mock + +import pytest +from pytest_mock import MockerFixture + +from segments.models import Segment +from segments.tasks import delete_segment + + +def test_delete_segment__existing_segment__deletes_segment( + mocker: MockerFixture, +) -> None: + # Given + segment_id = 1 + segment = Mock() + get_segment_mock = mocker.patch.object(Segment.objects, "get", return_value=segment) + + # When + delete_segment(segment_id) + + # Then + get_segment_mock.assert_called_once_with(pk=segment_id) + segment.delete.assert_called_once_with() + + +@pytest.mark.django_db +def test_delete_segment__missing_segment__does_not_raise( + mocker: MockerFixture, +) -> None: + # Given + segment_id = 1 + get_segment_mock = mocker.patch.object( + Segment.objects, "get", side_effect=Segment.DoesNotExist + ) + + # When + delete_segment(segment_id) + + # Then + get_segment_mock.assert_called_once_with(pk=segment_id)