"""Test status checker.""" from typing import Any import pytest from werkzeug.exceptions import NotFound from video.constants.release import LABEL_PROCESSING, TRANSFER_TO_CONTENT from video.exceptions import InvalidReleaseStatus from video.models.sql.classes import release from video.utils import status_checker def test_check_release_status_before_action(mocker: Any) -> None: """Single valid status, matched, returns the release record.""" expected = {"release_id": 1, "release_status": LABEL_PROCESSING} mocker.patch.object(release, "get", return_value=expected) result = status_checker.check_release_status_before_action( 1, frozenset({LABEL_PROCESSING}) ) assert result == expected def test_check_release_status_before_action_multiple_valid(mocker: Any) -> None: """Multiple valid statuses, matched, returns the release record.""" expected = {"release_id": 1, "release_status": LABEL_PROCESSING} mocker.patch.object(release, "get", return_value=expected) result = status_checker.check_release_status_before_action( 1, frozenset({TRANSFER_TO_CONTENT, LABEL_PROCESSING}) ) assert result == expected def test_check_release_status_before_action_invalid(mocker: Any) -> None: """Status mismatch raises InvalidReleaseStatus.""" mocker.patch.object( release, "get", return_value={"release_status": LABEL_PROCESSING}, ) with pytest.raises(InvalidReleaseStatus) as exc_info: status_checker.check_release_status_before_action( 1, frozenset({TRANSFER_TO_CONTENT}) ) assert exc_info.value.error_code == "invalid_release_status" def test_check_release_status_before_action_error(mocker: Any) -> None: """Missing release raises NotFound.""" mocker.patch.object(release, "get", return_value={}) with pytest.raises(NotFound): status_checker.check_release_status_before_action( 1, frozenset({TRANSFER_TO_CONTENT}) )