"""Tests for Persister.""" from unittest.mock import MagicMock from unittest.mock import Mock import sentry_sdk from sqlalchemy.exc import OperationalError from ows_product_physical.connector.mysql import db_session from ows_product_physical.constant import field from ows_product_physical.models import persister def test_persister_create_release_success( monkeypatch, db_fixture, valid_post_product_data, valid_create_response, valid_subaccount_id, valid_project_code, valid_artist_id, valid_placeholder_upc): """Assert release table was written to.""" with db_session() as session: valid_post_product_data[field.UPC] = valid_placeholder_upc resp = persister._create_release( session, valid_post_product_data, valid_subaccount_id, valid_project_code, valid_artist_id) assert resp.status == 201 assert resp.message.get('release_id') == 1 def test_persister_create_release_fail( monkeypatch, db_fixture, valid_post_product_data, valid_create_response_error, valid_subaccount_id, valid_project_code, valid_artist_id): """Assert release fail exception was captured.""" monkeypatch.setattr( sentry_sdk, 'capture_exception', value=MagicMock()) session = Mock() session.flush = MagicMock(side_effect=OperationalError('test', None, None)) resp = persister._create_release( session, valid_post_product_data, valid_subaccount_id, valid_project_code, valid_artist_id) assert resp.status == 500 assert sentry_sdk.capture_exception.called