"""Test for transcoding order 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 transcoding_order from tests.testutils import db, seed @pytest.fixture def valid_transcoding_order_data() -> dict[str, Any]: """Get valid data for create_transcoding_order.""" return { "expected": { "transcoding_order_id": len(seed.transcoding_order_seed_data) + 1, "sns_topic": None, "input_bucket": "ows-transcoding-raw-test", "input_key": "test-c85cc331-c08f-46fd-906d-793ef224eb1f.wav", "preset_id": None, }, "input": { "input_bucket": "ows-transcoding-raw-test", "input_key": "test-c85cc331-c08f-46fd-906d-793ef224eb1f.wav", }, } @db.test_schema def test_create_new_asset_upload(valid_transcoding_order_data: dict[str, Any]) -> None: """Test successful create of new transcoding_order.""" # test function call response = transcoding_order.create_transcoding_order( **valid_transcoding_order_data["input"] ) # checking assert response.status == 200 actual_result = response.message # delete unmocked TIMESTAMP del actual_result["created_timestamp"] assert actual_result == valid_transcoding_order_data["expected"] @db.test_schema def test_create_new_asset_upload_sql_error( valid_transcoding_order_data: dict[str, Any], ) -> None: """Test failure create of new transcoding_order.""" # 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 = transcoding_order.create_transcoding_order( **valid_transcoding_order_data["input"] ) # checking assert response.status == 500 @db.test_schema def test_get_transcoding_order_success() -> None: """Test successful get of existing transcoding_order.""" # data preparation expected_result = seed.transcoding_order_seed_data[1] existed_id = expected_result["transcoding_order_id"] # test function call response = transcoding_order.get_transcoding_order(transcoding_order_id=existed_id) # checking assert response assert response.status == 200 actual_result = response.message # delete unmocked TIMESTAMP del actual_result["created_timestamp"] assert actual_result == expected_result @db.test_schema def test_get_transcoding_order_not_found() -> None: """Test get_transcoding_order not found.""" # data preparation not_existed_id = len(seed.transcoding_order_seed_data[1]) + 1 # test function call response = transcoding_order.get_transcoding_order( transcoding_order_id=not_existed_id ) # checking assert not response assert response.status == 404 error_message = response.errors["message"] assert error_message == error.ERROR_MESSAGE_TRANSCODING_ORDER_NOT_FOUND @db.test_schema def test_get_transcoding_order_failure() -> None: """Test get_transcoding_order 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 = transcoding_order.get_transcoding_order(transcoding_order_id=0) # checking assert response.status == 500