"""Module with tests for create_transcoding_by_preset method.""" from unittest.mock import Mock from unittest.mock import patch import pytest from src import app @pytest.fixture def fixture_correct_create_transcoding_by_preset_args(): """Fixture with correct create_transcoding_by_preset call args.""" return { 'bucket': 'qa-raw-assets', 'key': 'audio.wav', 'preset_alias': 'qa-mezzanine', 'metadata': { 'duration_ms': 2963, 'channels': 2, 'codec': 'pcm', 'bit_rate': 1411200, 'sample_rate': 44100, 'bits_per_sample': 16, 'container': 'wave', 'mime_type': 'audio/vnd.wave', 'file_size_bytes': 522796, 'lossless': True, }, 'status_topic_alias': 'transcoding_topic' } @patch('owsrequest.request.process') def test_create_transcoding_by_preset_success( process, fixture_correct_create_transcoding_by_preset_args): """Test for create_transcoding_by_preset success.""" process.return_value = Mock(status_code=200) result = app.create_transcoding_by_preset( **fixture_correct_create_transcoding_by_preset_args) assert result assert process.call_args[1]['json'] == { 'input': { 'bucket': 'qa-raw-assets', 'key': 'audio.wav', 'metadata': { 'channels': 2, 'codec': 'pcm', 'container': 'wave', 'sample_rate': 44100, 'bit_depth': 16, 'bit_rate': 1411200 } }, 'status_topic_alias': 'transcoding_topic' } @patch('owsrequest.request.process') def test_create_transcoding_by_preset_bad_status_failure( process, fixture_correct_create_transcoding_by_preset_args): """Test for create_transcoding_by_preset ows-transcoding 500 failure.""" process.return_value = Mock(status_code=500) with pytest.raises(Exception): app.create_transcoding_by_preset( **fixture_correct_create_transcoding_by_preset_args) @patch('owsrequest.request.process') def test_create_transcoding_by_preset_exception_failure( process, fixture_correct_create_transcoding_by_preset_args): """Test for create_transcoding_by_preset request processing failure.""" process.side_effect = Exception('error') with pytest.raises(Exception): app.create_transcoding_by_preset( **fixture_correct_create_transcoding_by_preset_args)