"""Mocks for TrackPersister.""" from copy import deepcopy from oto.response import Response from backend.models.track_persister import TrackPersister from tests.testutils.functions import wrap_api_results def get_by_tuid(mocker, track): """Mock TrackPersister.get_by_tuid function. Args: track (Response object, Track object, or dict) """ if isinstance(track, Response): response = track else: response = Response(_prepare_track(track)) return mocker.patch.object( TrackPersister, 'get_by_tuid', return_value=response) def get_all_by_isrc_and_type(mocker, tracks): """Mock TrackPersister.get_all_by_isrc_and_type function. Args: tracks (list): List of tracks to respond with """ response = [_prepare_track(track) for track in tracks] return mocker.patch.object( TrackPersister, 'get_all_by_isrc_and_type', return_value=response) def get_all_for_account_by_isrc_and_type(mocker, tracks): """Mock TrackPersister.get_all_for_account_by_isrc_and_type function. Args: tracks (list): List of tracks to respond with """ if isinstance(tracks, Response): response = tracks else: response = Response( wrap_api_results( [_prepare_track(track) for track in tracks], ), ) return mocker.patch.object( TrackPersister, 'get_all_for_account_by_isrc_and_type', return_value=response, ) def get_multiple_by_tuids(mocker, tracks): """Mock TrackPersister.get_multiple_by_tuids function. Args: tracks (Response object or list of Tracks/dicts) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_multiple_by_tuids', return_value=response) def get_multiple_by_tuids_with_nones(mocker, tracks): """Mock TrackPersister.get_multiple_by_tuids_with_nones function. Args: tracks (Response object or list of Tracks/dicts) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_multiple_by_tuids_with_nones', return_value=response) def get_all_by_product_id(mocker, tracks): """Mock TrackPersister.get_all_by_product_id function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_by_product_id', return_value=response) def get_all_by_product_id_is_overview(mocker, tracks): """Mock TrackPersister.get_all_by_product_id function with is_overview. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track_for_overview(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_by_product_id', return_value=response) def get_all_by_product_id_light(mocker, tracks): """Mock TrackPersister.get_all_by_product_id_light function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_by_product_id_light', return_value=response) def get_all_by_product_ids_medium(mocker, tracks): """Mock TrackPersister.get_all_by_product_ids_medium function. Args: tracks (Response object or list of Tracks/dicts) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_by_product_ids_medium', return_value=response) def get_all_focus_track_by_product_id(mocker, tracks): """Mock TrackPersister.get_all_focus_track_by_product_id function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_focus_track_by_product_id', return_value=response) def get_all_track_isrc_by_product_id(mocker, tracks): """Mock TrackPersister.get_all_track_isrc_by_product_id function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(wrap_api_results( [_prepare_track(track) for track in tracks])) return mocker.patch.object( TrackPersister, 'get_all_track_isrc_by_product_id', return_value=response ) def create_track(mocker, track): """Mock TrackPersister.create_tracks function. Args: track (Response object, Track object, or dict) """ if isinstance(track, Response): response = track else: response = Response(_prepare_track(track)) return mocker.patch.object( TrackPersister, 'create_track', return_value=response) def bulk_create_tracks(mocker, tracks): """Mock TrackPersister.bulk_create_tracks function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(_prepare_track(tracks)) return mocker.patch.object( TrackPersister, 'bulk_create_tracks', return_value=response) def update_multiple_tracks(mocker, tracks): """Mock TrackPersister.update_multiple_tracks function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(_prepare_track(tracks)) return mocker.patch.object( TrackPersister, 'update_multiple_tracks', return_value=response) def create_and_update_multiple_tracks(mocker, tracks): """Mock TrackPersister.create_and_update_multiple_tracks function. Args: tracks (Response object, Track object, or dict) """ if isinstance(tracks, Response): response = tracks else: response = Response(_prepare_track(tracks)) return mocker.patch.object( TrackPersister, 'create_and_update_multiple_tracks', return_value=response) def update_track(mocker, track): """Mock TrackPersister.update_tracks function. Args: track (Response object, Track object, or dict) """ if isinstance(track, Response): response = track else: response = Response(_prepare_track(track)) return mocker.patch.object( TrackPersister, 'update_track', return_value=response) def import_tracks(mocker, src_dest_data): """Mock TrackPersister.import_tracks function. Args: src_dest_data (Response object, or list) """ if isinstance(src_dest_data, Response): response = src_dest_data else: response = Response(wrap_api_results(deepcopy(src_dest_data))) return mocker.patch.object( TrackPersister, 'import_tracks', return_value=response) def get_track_by_track_artist_id(mocker, track): """Mock TrackPersister.get_track_by_track_artist_id function. Args: track (dict): Track to respond with """ if isinstance(track, Response): response = track else: response = Response(_prepare_track(track)) return mocker.patch.object( TrackPersister, 'get_track_by_track_artist_id', return_value=response) def _prepare_track(track): """Make track dictionary.""" if isinstance(track, dict): return deepcopy(track) else: return track.to_dict() def _prepare_track_for_overview(track): """Make track for overview dictionary.""" if isinstance(track, dict): return deepcopy(track) else: return track.overview_to_dict() def get_by_isrc_and_type(mocker, track): """Mock TrackPersister.get_by_isrc_and_type function. Args: tracks (list): dict of track to respond with """ return mocker.patch.object( TrackPersister, 'get_by_isrc_and_type', return_value=track)