def test_value_error_is_raised_if_payments_ids_do_not_match_payments(self): # given payments = [ create_payment(Booking(), Offerer(), 10, idx=111), create_payment(Booking(), Offerer(), 10, idx=222), ] ids_to_ban = [222, 333] # when with pytest.raises(UnmatchedPayments) as e: apply_banishment(payments, ids_to_ban) # then assert e.value.payment_ids == {333}
def test_no_payments_are_returned_if_no_ids_are_provided(self): # given payments = [ create_payment(Booking(), Offerer(), 10, idx=111), create_payment(Booking(), Offerer(), 10, idx=222), ] ids_to_ban = [] # when banned_payments, retry_payments = apply_banishment( payments, ids_to_ban) # then assert banned_payments == [] assert retry_payments == []
def test_no_payments_to_retry_if_all_are_banned(self): # given payments = [ create_payment(Booking(), Offerer(), 10, idx=111), create_payment(Booking(), Offerer(), 10, idx=222), ] ids_to_ban = [111, 222] # when banned_payments, retry_payments = apply_banishment( payments, ids_to_ban) # then assert len(banned_payments) == 2 assert retry_payments == []
def do_ban_payments(message_id: str, payment_ids_to_ban: list[int]): matching_payments = find_payments_by_message(message_id) try: banned_payments, retry_payments = apply_banishment(matching_payments, payment_ids_to_ban) except UnmatchedPayments as e: logger.exception( "Le message %s ne contient pas les paiements : %s. Aucun paiement n'a été mis à jour.", message_id, e.payment_ids, ) else: if banned_payments: repository.save(*(banned_payments + retry_payments)) logger.info("Paiements bannis : %s ", [p.id for p in banned_payments]) logger.info("Paiements à réessayer : %s ", [p.id for p in retry_payments])
def test_payments_not_matching_given_ids_must_be_retried(self): # given payments = [ create_payment(Booking(), Offerer(), 10, idx=111), create_payment(Booking(), Offerer(), 10, idx=222), create_payment(Booking(), Offerer(), 10, idx=333), create_payment(Booking(), Offerer(), 10, idx=444), ] ids_to_ban = [222, 333] # when _banned_payments, retry_payments = apply_banishment( payments, ids_to_ban) # then assert len(retry_payments) == 2 for p in retry_payments: assert p.currentStatus.status == TransactionStatus.RETRY assert p.id not in ids_to_ban