"""Unit tests for ows_asset_transcoder model.""" from unittest.mock import patch import pytest from podcast.models import ows_asset_transcoder from podcast.utils import exc @patch('podcast.models.ows_asset_transcoder.get_ows_headers', return_value={}) @patch('owsrequest.request.get') def test_get_object_asset_by_id_and_type(mock_get, mock_headers, episode_wav_asset_fixture): """Test will get object by id and type from asset uplaod.""" mock_get.return_value.status_code = 200 mock_get.return_value.json.return_value = episode_wav_asset_fixture result = ows_asset_transcoder.get_object_asset_by_id_and_type(1, 'episode', 'WAV') assert mock_get.call_args[1]['params'] == {'object_id': 1, 'object_type': 'episode', 'asset_type': 'WAV'} assert result == episode_wav_asset_fixture @patch('podcast.models.ows_asset_transcoder.get_ows_headers', return_value={}) @patch('owsrequest.request.get') def test_get_object_asset_by_id_and_type_not_found(mock_get, mock_headers): """Test will get object by id and type from asset uplaod not found.""" mock_get.return_value.status_code = 404 with pytest.raises(exc.OwsError) as err: ows_asset_transcoder.get_object_asset_by_id_and_type(1, 'episode', 'WAV') assert err.value.status == 404 @patch('podcast.models.ows_asset_transcoder.get_ows_headers', return_value={}) @patch('owsrequest.request.get') def test_get_episode_assets(mock_get, mock_headers, oat_response_fixture): """Test will get episode assets.""" mock_get.return_value.status_code = 200 mock_get.return_value.json.return_value = oat_response_fixture result = ows_asset_transcoder.get_episode_assets(1, 240) assert mock_get.call_args[1]['params'] == { 'object_ids': [1], 'object_types': ['episode'], 'signed_url_duration': 240 } assert result == { 'xlarge_cover': 'images/xlarge_cover/xlarge_cover.jpeg', 'x_large_image_url': 'test-jpg-xlarge-cover-url', 'audio_duration': 24384, 'audio_path': '1c1a7df1_5291_40e3_817a_0976df33b824.mp3', 'audio_url': 'test-mp3-url' } @patch('podcast.models.ows_asset_transcoder.get_ows_headers', return_value={}) @patch('owsrequest.request.post') def test_replicate_episodes_audio_assets(mock_post, mock_headers, oat_episode_audio_assets_fixture): """Test will get episode wav asset uplaod.""" mock_post.return_value.status_code = 200 mock_post.return_value.json.return_value = oat_episode_audio_assets_fixture result = ows_asset_transcoder.replicate_episodes_audio_assets([{'original_episode_id': 1, 'episode_id': 2}]) assert result.status_code == 200 assert result.json() == [ {'original_episode_id': 1, 'episode_id': 2, 'status': 'asset-replication-completed'} ]