"""Mocks for InstantGratPersister.""" from copy import deepcopy from oto.response import Response from backend.models.instant_grats_persister import InstantGratPersister from tests.testutils.functions import wrap_api_results def fetch_grats_by_list_of_tuids(mocker, grats): """Mock TrackPersister.get_all_by_product_id function. Args: grats (Response object, Grat object, or dict) """ if isinstance(grats, Response): response = grats else: response = Response(wrap_api_results( [_prepare_grat(grat) for grat in grats])) return mocker.patch.object( InstantGratPersister, 'fetch_grats_by_list_of_tuids', return_value=response) def bulk_create_grats(mocker, grats, assert_called_with=None): """Mock TrackPersister.get_all_by_product_id function. Args: grats (Response object, Grat object, or dict). assert_called_with (dict): dictionary with provided to method params. """ if isinstance(grats, Response): response = grats else: response = Response(wrap_api_results( [_prepare_grat(grat) for grat in grats])) with mocker.patch.object( InstantGratPersister, 'bulk_create_grats', return_value=response) as mock_method: if assert_called_with: InstantGratPersister.bulk_create_grats.assert_called_with( assert_called_with) return mock_method def bulk_update_grats(mocker, grats): """Mock InstantGratsPersister.bulk_update_grats function. Args: grats (Response object, Grat object, or dict) """ if isinstance(grats, Response): response = grats else: response = Response(wrap_api_results( [_prepare_grat(grat) for grat in grats])) return mocker.patch.object( InstantGratPersister, 'bulk_update_grats', return_value=response) def _prepare_grat(grat): """Make grat dictionary.""" if isinstance(grat, dict): return deepcopy(grat) else: return grat.to_dict()