"""Test for preset model.""" from typing import Any from unittest import mock import pytest from sqlalchemy.exc import SQLAlchemyError from transcoding.constants import error from transcoding.models import preset from tests.testutils import db, seed @db.test_schema @pytest.mark.parametrize("existed_preset", seed.preset_seed_data) def test_get_preset_by_id_success(existed_preset: dict[str, Any]) -> None: """Test successful get of existing preset.""" # data preparation expected_result = existed_preset existed_id = expected_result["preset_id"] # test function call response = preset.get_preset_by_id(preset_id=existed_id) # checking assert response assert response.status == 200 assert response.message == expected_result @db.test_schema def test_get_preset_by_id_not_found() -> None: """Test get_preset_by_id not found.""" # data preparation not_existed_id = len(seed.preset_seed_data) + 1 expected_message = error.ERROR_NOT_FOUND_MESSAGE.format("Preset") # test function call response = preset.get_preset_by_id(preset_id=not_existed_id) # checking assert not response assert response.status == 404 error_message = response.errors["message"] assert error_message == expected_message @db.test_schema def test_get_preset_by_id_failure() -> None: """Test get_preset_by_id db failure.""" # data preparation error_mock = SQLAlchemyError(500) package_path = "transcoding.connectors.mysql.db_session" # mocking with mock.patch(package_path, side_effect=error_mock): # test function call response = preset.get_preset_by_id(preset_id=0) # checking assert response.status == 500 @db.test_schema @pytest.mark.parametrize("existed_preset", seed.preset_seed_data) def test_get_preset_by_alias_success(existed_preset: dict[str, Any]) -> None: """Test successful get of existing preset.""" # data preparation expected_result = existed_preset existed_id = expected_result["alias"] # test function call response = preset.get_preset_by_alias(alias=existed_id) # checking assert response assert response.status == 200 assert response.message == expected_result @db.test_schema def test_get_preset_by_alias_not_found() -> None: """Test get_preset_by_alias not found.""" # data preparation not_existed_alias = "not_existed_alias" expected_message = error.ERROR_NOT_FOUND_MESSAGE.format("Preset") # test function call response = preset.get_preset_by_alias(alias=not_existed_alias) # checking assert not response assert response.status == 404 error_message = response.errors["message"] assert error_message == expected_message @db.test_schema def test_get_preset_by_alias_failure() -> None: """Test get_preset_by_alias db failure.""" # data preparation error_mock = SQLAlchemyError(500) package_path = "transcoding.connectors.mysql.db_session" # mocking with mock.patch(package_path, side_effect=error_mock): # test function call response = preset.get_preset_by_alias(alias="") # checking assert response.status == 500 @db.test_schema def test_get_all_presets_success() -> None: """Test successful get of all existed presets.""" # test function call response = preset.get_all_presets() # checking assert response assert response.status == 200 assert response.message == seed.preset_seed_data @db.test_schema def test_get_all_presets_failure() -> None: """Test get_all_presets db failure.""" # data preparation error_mock = SQLAlchemyError(500) package_path = "transcoding.connectors.mysql.db_session" # mocking with mock.patch(package_path, side_effect=error_mock): # test function call response = preset.get_all_presets() # checking assert response.status == 500