"""Tests for track logic.""" import config from src.logic import track from src.models import ows_product, ows_track def test_prepare_doc_add( mocker, get_track_info_fixture, get_release_info_fixture, track_insert_input, track_document_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(track_insert_input) assert doc == { "_index": config.TRACK_INDEX_NAME, "_op_type": "update", "_id": track_insert_input["data"]["id"], "doc": track_document_fixture, "doc_as_upsert": True, } def test_prepare_doc_delete(track_insert_input): """Test prepare cloudsearch document for deletion.""" delete_event = track_insert_input.copy() delete_event["type"] = "delete" delete_doc = { "_index": config.TRACK_INDEX_NAME, "_op_type": "delete", "_id": track_insert_input["data"]["id"], "doc_as_upsert": True, } doc = track.prepare_doc(delete_event) assert doc == delete_doc def test_prepare_doc_incompatible(mocker, track_insert_input): """Test prepare cloudsearch document with incompatible format.""" delete_event = track_insert_input.copy() del delete_event["type"] doc = track.prepare_doc(delete_event) assert doc is None def test_prepare_release_tracks_docs_add( mocker, get_tracks_by_product_id_fixture, get_release_info_fixture, product_update_input, prepare_release_tracks_docs_result, ): """Test prepare release tracks cloudsearch document.""" product_update_input["old"]["release_status"] = "transfer_to_content" product_update_input["data"]["release_status"] = "in_content" 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(product_update_input) assert doc == prepare_release_tracks_docs_result