"""Tests for track logic.""" from logic import track from models import ows_product from models import ows_track import const # noqa import index # noqa def test_prepare_doc_add( mocker, get_track_info_fixture, get_release_info_fixture, track_cloudsearch_document, converted_track_event_fixture): """Test prepare cloudsearch document.""" mocker.patch.object( ows_product, 'get_release_info', return_value=get_release_info_fixture) mocker.patch.object( ows_track, 'get_track_artist_info', return_value=get_track_info_fixture) doc = track.prepare_doc(converted_track_event_fixture) assert doc == track_cloudsearch_document def test_prepare_doc_delete( track_cloudsearch_document, converted_track_event_fixture): """Test prepare cloudsearch document for deletion.""" delete_event = converted_track_event_fixture.copy() delete_doc = track_cloudsearch_document.copy() delete_event['type'] = 'delete' delete_doc['type'] = 'delete' delete_doc.pop('fields') doc = track.prepare_doc(delete_event) assert doc == delete_doc def test_prepare_doc_incompatible(mocker, converted_track_event_fixture): """Test prepare cloudsearch document with incompatible format.""" delete_event = converted_track_event_fixture.copy() del delete_event['type'] doc = track.prepare_doc(delete_event) assert doc == {} def test_prepare_release_tracks_docs_add( mocker, get_tracks_by_product_id_fixture, get_release_info_fixture, tracks_for_product_cloudsearch_document, converted_product_event_fixture): """Test prepare release tracks cloudsearch document.""" get_release_info_fixture['release_status'] = 'in_content' mocker.patch.object( ows_track, 'get_all_tracks_by_product_id', return_value=get_tracks_by_product_id_fixture) mocker.patch.object( ows_product, 'get_release_info', return_value=get_release_info_fixture) doc = track.prepare_release_tracks_docs(converted_product_event_fixture) assert doc == tracks_for_product_cloudsearch_document # @pytest.mark.parametrize( # 'mock_object,mock_method,exception_message', [ # (ows_product, 'get_release_info', const.OWS_PRODUCT_ERROR), # (ows_track, 'get_track_artist_info', const.OWS_TRACK_ERROR) # ] # ) # def test_prepare_doc_error( # mocker, # converted_track_event_fixture, # mock_object, # mock_method, # exception_message): # """Test prepare cloudsearch document ows-product error.""" # mocker.patch.object( # mock_object, # mock_method, # side_effect=Exception(exception_message)) # with pytest.raises(Exception, message=exception_message): # track.prepare_doc(converted_track_event_fixture) # def test_prepare_doc_track_exclusion( # mocker, # get_release_info_fixture, # get_track_info_fixture, # converted_track_event_fixture, # track_cloudsearch_document, # converted_track_delete_row_fixture, # product_id): # """Test prepare cloudsearch document on exclusion list.""" # mocker.patch.object( # ows_product, # 'get_release_info', # return_value=get_release_info_fixture) # mocker.patch.object( # ows_track, # 'get_track_artist_info', # return_value=get_track_info_fixture) # event = converted_track_event_fixture.copy() # event['data']['release_id'] = product_id # doc = track.prepare_doc(event) # delete_doc = converted_track_delete_row_fixture # assert doc == delete_doc