"""Tests for persister.""" from unittest.mock import MagicMock import pytest import sentry_sdk from sqlalchemy.orm.session import Session from ows_product_physical.models import persister @pytest.mark.parametrize('product_code, count', [('PHYS1', 3), ('PHYS2', 1)]) def test_persister_get_physical_release_count_by_product_code_success( db_with_data, product_code, count): """Test query for retrieving count of physical releases by product code.""" results = \ persister.get_physical_release_count_by_product_code(product_code) assert results.status == 200 assert results.message == count @pytest.mark.parametrize( 'product_code, product_id, count', [('PHYS1', 1, 2), ('PHYS2', 2, 0)]) def test_persister_get_physical_release_count_by_product_code_and_id_success( db_with_data, product_code, product_id, count): """Test query for retrieving count of physical releases with product id.""" results = persister.get_physical_release_count_by_product_code( product_code, product_id) assert results.status == 200 assert results.message == count def test_persister_get_physical_release_count_by_product_code_not_found( db_with_data): """Test retrieving a release with product_code that does not exist.""" product_code = 'MCK123' results = \ persister.get_physical_release_count_by_product_code(product_code) assert results.status == 200 assert results.message == 0 def test_persister_get_physical_release_count_by_product_code_db_failure( db_with_data, monkeypatch): """Test error response when query fails.""" monkeypatch.delattr( Session, 'execute', raising=True) monkeypatch.setattr( sentry_sdk, 'capture_exception', value=MagicMock()) product_code = 'PHYS1' results = \ persister.get_physical_release_count_by_product_code(product_code) assert results.status == 500 assert sentry_sdk.capture_exception.called