Skip to content

Commit

Permalink
Small unit test changes
Browse files Browse the repository at this point in the history
  • Loading branch information
seeker25 committed Sep 16, 2024
1 parent 0b6b7ae commit 8cd1241
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 9 deletions.
2 changes: 1 addition & 1 deletion jobs/payment-jobs/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 9 additions & 8 deletions pay-api/src/pay_api/models/partner_disbursements.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,22 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Model to track Partner Disbursements, need this table because invoices can be reversed and applied multiple times."""
"""Model to track Partner Disbursements, need this table because invoices can be reversed and applied multiple times.
This is used in three different distinct flows for EFT only currently (provided the partner disbursements enabled):
1. Invoice creation - create a Partner Disbursement record
2. Invoice reversal - create a Partner Disbursement reversal record
3. Statement reversal - EFT specific, create a Partner Disbursement reversal record
"""

from datetime import datetime, timezone

from .base_model import BaseModel
from .db import db


"""
This is used in three different distinct flows for EFT only currently (provided the partner disbursements enabled):
1. Invoice creation - create a Partner Disbursement record
2. Invoice reversal - create a Partner Disbursement reversal record
3. Statement reversal - EFT specific, create a Partner Disbursement reversal record
"""

class PartnerDisbursements(BaseModel): # pylint: disable=too-many-instance-attributes
"""This class manages the partner disbursements that should be executed."""

Expand Down
10 changes: 10 additions & 0 deletions pay-api/tests/unit/api/test_eft_payment_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@

from dateutil.relativedelta import relativedelta

from pay_api.models import CorpType as CorpTypeModel
from pay_api.models import EFTCredit as EFTCreditModel
from pay_api.models import EFTShortnames as EFTShortnamesModel
from pay_api.models import PartnerDisbursements
from pay_api.models import PaymentAccount as PaymentAccountModel
from pay_api.models import Statement as StatementModel
from pay_api.services.eft_short_names import EFTShortnames as EFTShortnamesService
Expand Down Expand Up @@ -66,6 +68,10 @@ def setup_statement_data(account: PaymentAccountModel, invoice_totals: List[Deci
total=invoice_total, paid=0).save()
factory_statement_invoices(statement_id=statement.id, invoice_id=invoice.id)

corp_type = CorpTypeModel.find_by_code('CP')
corp_type.has_partner_disbursements = True
corp_type.save()

return statement


Expand Down Expand Up @@ -323,3 +329,7 @@ def test_eft_reverse_payment_action(db, session, client, jwt, app, admin_users_m
assert credit_invoice_links[1].amount == credit_invoice_links[0].amount
assert credit_invoice_links[1].receipt_number == credit_invoice_links[0].receipt_number
assert EFTCreditModel.get_eft_credit_balance(short_name.id) == 100

partner_disbursement = PartnerDisbursements.query.first()
assert partner_disbursement.is_reversal is True
assert partner_disbursement.amount == 100
29 changes: 29 additions & 0 deletions pay-api/tests/unit/services/test_eft_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
from pay_api.exceptions import BusinessException
from pay_api.models import EFTCreditInvoiceLink as EFTCreditInvoiceLinkModel
from pay_api.models import EFTShortnamesHistorical as EFTHistoryModel
from pay_api.models import PartnerDisbursements
from pay_api.models.corp_type import CorpType as CorpTypeModel
from pay_api.services.eft_service import EftService
from pay_api.utils.enums import EFTCreditInvoiceStatus, EFTHistoricalTypes, InvoiceStatus, PaymentMethod
from pay_api.utils.errors import Error
Expand Down Expand Up @@ -187,6 +189,9 @@ def test_eft_invoice_refund(session, test_name):
eft_credit_id=eft_credit.id,
status_code=EFTCreditInvoiceStatus.COMPLETED.value,
link_group_id=2).save()
corp_type = CorpTypeModel.find_by_code('CP')
corp_type.has_partner_disbursements = True
corp_type.save()
case _:
raise NotImplementedError

Expand Down Expand Up @@ -229,12 +234,19 @@ def test_eft_invoice_refund(session, test_name):
assert eft_credit.remaining_amount == 4
assert EFTCreditInvoiceLinkModel.query.count() == 5 + 3
pending_refund_count = 0
amount = 0
for cil in EFTCreditInvoiceLinkModel.query.all():
if cil.status_code == EFTCreditInvoiceStatus.PENDING_REFUND.value:
pending_refund_count += 1
amount += cil.amount
assert pending_refund_count == 3
eft_history = session.query(EFTHistoryModel).one()
assert_shortname_refund_history(eft_credit, eft_history, invoice)
assert PartnerDisbursements.query.count() == 1
partner_disbursement = PartnerDisbursements.query.first()
assert partner_disbursement.is_reversal is True
assert partner_disbursement.partner_code == 'CP'
assert partner_disbursement.amount == amount
case _:
raise NotImplementedError

Expand All @@ -245,3 +257,20 @@ def assert_shortname_refund_history(eft_credit, eft_history, invoice):
assert eft_history.is_processing is True
assert eft_history.amount == invoice.total
assert eft_history.transaction_type == EFTHistoricalTypes.INVOICE_REFUND.value


def test_eft_partner_disbursement(session):
"""Small test to assert if partner disbursement enabled a row is created."""
payment_account = factory_payment_account(payment_method_code=PaymentMethod.EFT.value)
invoice = factory_invoice(payment_account=payment_account,
status_code=InvoiceStatus.APPROVED.value,
total=5).save()
eft_service.create_invoice(payment_account, 10, invoice)
assert PartnerDisbursements.query.count() == 0

corp_type = CorpTypeModel.find_by_code('CP')
corp_type.has_partner_disbursements = True
corp_type.save()

eft_service.create_invoice(payment_account, 10, invoice)
assert PartnerDisbursements.query.count() == 1

0 comments on commit 8cd1241

Please sign in to comment.