"""Unit tests for ReportPaymentGroupPayment model.""" from abacus_common_logic.connectors.database import db from sqlalchemy import func, select from payment.constants.constants import REPORT_TYPE from payment.models.report_payment_group_payment import ReportPaymentGroupPayment from tests.utils.factories import PaymentGroupPaymentFactory def test_create(): """Create a payment_group_payment report.""" payment_group_payment = PaymentGroupPaymentFactory.create() report = ReportPaymentGroupPayment( payment_group_payment=payment_group_payment, report_export_url='s3://abacus-payments/123-payment-name/summary/summary.tsv', report_type=REPORT_TYPE.SUMMARY, ) db.session.add(report) db.session.flush() assert ( len(db.session.execute(select(ReportPaymentGroupPayment)).scalars().all()) == 1 ) def test_hard_delete_by_payment_group_payment(): """Test hard deleting reports by payment_group_payment_id.""" payment_group_payment = PaymentGroupPaymentFactory.create() report1 = ReportPaymentGroupPayment.create( payment_group_payment=payment_group_payment, report_export_url='s3://abacus-payments/123-payment-name/summary/summary.tsv', report_type=REPORT_TYPE.SUMMARY, ) report2 = ReportPaymentGroupPayment.create( payment_group_payment=payment_group_payment, report_export_url='s3://abacus-payments/123-payment-name/approval/approval.tsv', report_type=REPORT_TYPE.APPROVAL, ) report1_id = report1.report_payment_group_payment_id report2_id = report2.report_payment_group_payment_id assert ( db.session.execute( select(func.count()).select_from( select(ReportPaymentGroupPayment) .where( ReportPaymentGroupPayment.report_payment_group_payment_id.in_( [report1_id, report2_id] ) ) .subquery() ) ).scalar_one() == 2 ) ReportPaymentGroupPayment.hard_delete_by_payment_group_payment( payment_group_payment.payment_group_payment_id ) assert ( db.session.execute( select(func.count()).select_from( select(ReportPaymentGroupPayment) .where( ReportPaymentGroupPayment.report_payment_group_payment_id.in_( [report1_id, report2_id] ) ) .subquery() ) ).scalar_one() == 0 )