"""Fixtures for testing.""" from types import SimpleNamespace from unittest.mock import MagicMock import pytest from models.asset import Audio @pytest.fixture def test_actions_empty(): return {} @pytest.fixture def test_empty_list(): return [] @pytest.fixture def test_audio_results(): return [ Audio( source_audio_file='12345_001_001.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_002.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_003.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_004.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_005.wav', release_level_key='12345'), ] @pytest.fixture(scope='class') def test_class_audio_results(request): """Test fixture for asset list.""" request.cls.test_class_audio_results = [ Audio( source_audio_file='12345_001_001.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_002.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_003.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_004.wav', release_level_key='12345'), Audio( source_audio_file='12345_001_005.wav', release_level_key='12345'), ] @pytest.fixture def test_list_5_items(): return [ '12345_001_001.wav', '12345_001_002.wav', '12345_001_003.wav', '12345_001_004.wav', '12345_001_005.wav', ] @pytest.fixture(scope='class') def test_class_list_5_items(request): request.cls.test_class_list_5_items = [ '12345_001_001.wav', '12345_001_002.wav', '12345_001_003.wav', '12345_001_004.wav', '12345_001_005.wav', ] @pytest.fixture(scope='class') def test_class_list_items(request): """Test fixture for returned item list.""" def _test_list_items(*args, **kwargs): release_id = 12345 obj_list = list() for i in range(kwargs['num']): ext = 'wav' if not kwargs.get('type') else kwargs.get('type') file_name = '{}_{}_{}.{}'.format( release_id, '1'.zfill(3), str(i + 1).zfill(3), ext) obj_list.append(file_name) return obj_list request.cls.test_class_list_items = _test_list_items @pytest.fixture def test_sentry(mocker): """Return a mocked Sentry object""" return mocker.patch('integration_scripts.connectors.sentry.sentry_client') @pytest.fixture def test_copy_from_backoff(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.copy_from_backoff') @pytest.fixture def test_copy_from_backoff_exception(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.copy_from_backoff', side_effect=Exception()) @pytest.fixture def test_head_object_backoff(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.head_object_backoff') @pytest.fixture def test_head_object_backoff_exception(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.head_object_backoff', side_effect=Exception()) @pytest.fixture def test_download_fileobj_backoff(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.download_fileobj_backoff') @pytest.fixture def test_download_fileobj_backoff_exception(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.download_fileobj_backoff', side_effect=Exception()) @pytest.fixture def test_delete_backoff(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.delete_backoff') @pytest.fixture def test_delete_backoff_exception(mocker): return mocker.patch( 'integration_scripts.s3_backoff_utils.delete_backoff', side_effect=Exception()) @pytest.fixture def test_image(mocker): mock_image = MagicMock() return mocker.patch('PIL.Image.open', return_value=mock_image) @pytest.fixture def test_image_exception(mocker): return mocker.patch('PIL.Image.open', side_effect=Exception()) @pytest.fixture(scope='class') def test_audio_asset_list(request): """Test fixture for audio assets.""" request.cls.test_audio_asset_list = [ { 'foreign_rel_id': '12345', 'orch_upc': '12345678909', 'volume': '1', 'track': '1', 'file_name': 'Phonofile_audio/12345_001_001.wav', 'vendor_id': 'abcde' }, { 'foreign_rel_id': '12345', 'orch_upc': '12345678909', 'volume': '1', 'track': '2', 'file_name': 'Phonofile_audio/12345_001_002.wav', 'vendor_id': 'abcde' }, { 'foreign_rel_id': '22345', 'orch_upc': '22345678909', 'volume': '1', 'track': '1', 'file_name': 'Phonofile_audio/22345_001_001.wav', 'vendor_id': 'fghij' } ] # # @pytest.fixture(scope='class') # def test_audio_asset_list_class(request): # """Test fixture for audio assets.""" # request.cls.test_audio_asset_list_class = [ # { # 'source_relid': '12345', # 'orch_upc': '12345678909', # 'volume': '1', # 'track': '1', # 'file_name': 'Phonofile_audio/12345_001_001.wav' # }, # { # 'source_relid': '12345', # 'orch_upc': '12345678909', # 'volume': '1', # 'track': '2', # 'file_name': 'Phonofile_audio/12345_001_002.wav' # } # ] @pytest.fixture(scope='class') def test_cover_asset_list(request): """Test fixture for cover assets.""" request.cls.test_cover_asset_list = [ { 'foreign_rel_id': '12345', 'orch_upc': '12345678909', 'file_name': 'Phonofile_cover/12345.tif', 'vendor_id': 'abcde' }, { 'foreign_rel_id': '22345', 'orch_upc': '22345678909', 'file_name': 'Phonofile_cover/22345.tif', 'vendor_id': 'fghij' } ] @pytest.fixture(scope='class') def test_transform_type(request): """Test fixture for transformer type.""" request.cls.test_transform_type = 'phonofile' @pytest.fixture def test_actions_list(): """Test fixture for action list.""" return { 'file_1': 'completed', 'file_2': 'skipped', 'file_3': 'restored', 'file_4': 'failed', 'file_5': 'missing', 'file_6': 'file_count_mismatch', 'file_7': 'undefined' } @pytest.fixture(scope='class') def test_class_filter_list(request): """Test fixture for returned filter list.""" def _test_filter_list(*args, **kwargs): release_id = 12345 obj_list = list() for i in range(kwargs['num']): ext = 'wav' if not kwargs.get('type') else kwargs.get('type') key = '{}/{}_{}_{}.{}'.format( release_id, release_id, 1, i + 1, ext) obj_list.append(SimpleNamespace(key=key)) return obj_list request.cls.test_class_filter_list = _test_filter_list