"""Tests for delete_supply_chain_metadata_by_product.""" from ows_product_physical.models import product_physical_supply_chain_metadata as ppscm def test_delete_supply_chain_metadata_by_product_success(mocker, db_release_id): """It should hard delete all supply chain metadata rows for a product.""" mock_session = mocker.MagicMock() mock_query = mocker.MagicMock() mock_filter = mocker.MagicMock() mocker.patch.object( ppscm.mysql, 'db_session', return_value=mock_session ) mock_session.__enter__.return_value = mock_session mock_session.__exit__.return_value = None mock_session.query.return_value = mock_query mock_query.filter.return_value = mock_filter resp = ppscm.delete_supply_chain_metadata_by_product(db_release_id) mock_session.query.assert_called_once_with( ppscm.ProductPhysicalSupplyChainMetadata ) mock_query.filter.assert_called_once() filter_args = mock_query.filter.call_args[0] assert len(filter_args) == 1 assert str(filter_args[0]) == str( ppscm.ProductPhysicalSupplyChainMetadata.product_id == db_release_id ) mock_filter.delete.assert_called_once_with() assert resp.status == 204 def test_delete_supply_chain_metadata_by_product_failure(mocker, db_release_id): """It should return error response when delete fails.""" mock_session = mocker.MagicMock() mock_query = mocker.MagicMock() mock_filter = mocker.MagicMock() exception = Exception('mysql error') mocker.patch.object( ppscm.mysql, 'db_session', return_value=mock_session ) capture_exception = mocker.patch.object(ppscm.sentry_sdk, 'capture_exception') create_error_response = mocker.patch.object( ppscm.response, 'create_error_response' ) mock_session.__enter__.return_value = mock_session mock_session.__exit__.return_value = None mock_session.query.return_value = mock_query mock_query.filter.return_value = mock_filter mock_filter.delete.side_effect = exception resp = ppscm.delete_supply_chain_metadata_by_product(db_release_id) capture_exception.assert_called_once_with(exception) create_error_response.assert_called_once_with( code=ppscm.error.INTERNAL_ERROR, message='mysql error', status=500, ) assert resp == create_error_response.return_value