Esempio n. 1
0
    def test_create_person_when_using_new_address(self):
        information_url = reverse("europeennes_donation_information")

        res = self.client.post(
            reverse("europeennes_donation_amount"), {"amount": "200"}
        )
        self.assertRedirects(res, information_url)

        self.donation_information_payload["email"] = "*****@*****.**"
        res = self.client.post(information_url, self.donation_information_payload)
        payment = Payment.objects.get()
        self.assertRedirects(res, reverse("payment_page", args=[payment.pk]))

        # simulate correct payment
        complete_payment(payment)
        donation_notification_listener(payment)

        p2 = Person.objects.exclude(pk=self.p1.pk).get()
        # assert fields have been saved on model
        for f in [
            "first_name",
            "last_name",
            "location_address1",
            "location_address2",
            "location_zip",
            "location_city",
            "location_country",
            "email",
        ]:
            self.assertEqual(getattr(p2, f), self.donation_information_payload[f])
Esempio n. 2
0
def update_payment_from_transaction(payment, transaction):
    if transaction.status == SystemPayTransaction.STATUS_COMPLETED:
        if payment.status == Payment.STATUS_CANCELED:
            logger.error(
                f"La transaction Systempay {transaction.pk} a été mise à jour alors que le paiement {payment.pk} était annulé"
            )
            return

        complete_payment(payment)
Esempio n. 3
0
    def test_can_make_a_loan_when_logged_in(self, on_commit):
        self.client.force_login(self.p1.role)
        amount_url = reverse("europeennes_loan_amount")
        information_url = reverse("europeennes_loan_information")
        sign_contract_url = reverse("europeennes_loan_sign_contract")

        res = self.client.get(amount_url)
        self.assertEqual(res.status_code, 200)

        res = self.client.post(amount_url, {"amount": "400"})
        self.assertRedirects(res, information_url)

        res = self.client.post(information_url, self.donation_information_payload)
        self.assertRedirects(res, sign_contract_url)

        res = self.client.post(sign_contract_url, data={"acceptance": "Y"})
        # no other payment
        payment = Payment.objects.get()
        self.assertRedirects(res, reverse("payment_page", args=(payment.pk,)))

        res = self.client.get(reverse("payment_return", args=(payment.pk,)))
        self.assertEqual(res.status_code, 200)

        self.p1.refresh_from_db()

        # assert fields have been saved on model
        for f in [
            "first_name",
            "last_name",
            "location_address1",
            "location_address2",
            "location_zip",
            "location_city",
            "location_country",
        ]:
            self.assertEqual(getattr(self.p1, f), self.donation_information_payload[f])

        # fake systempay webhook
        complete_payment(payment)

        loan_notification_listener(payment)

        on_commit.assert_called_once()
        partial = on_commit.call_args[0][0]

        self.assertEqual(partial.func, generate_and_send_contract)
        self.assertEqual(partial.args, (payment.id,))
Esempio n. 4
0
    def test_can_donate_while_logged_in(self, send_donation_email):
        self.client.force_login(self.p1.role)
        amount_url = reverse("donation_amount")
        information_url = reverse("donation_information")

        res = self.client.get(amount_url)
        self.assertEqual(res.status_code, 200)

        res = self.client.post(amount_url, {"amount": "200"})
        self.assertRedirects(res, information_url)

        res = self.client.get(information_url)
        self.assertEqual(res.status_code, 200)

        res = self.client.post(information_url,
                               self.donation_information_payload)
        # no other payment
        payment = Payment.objects.get()
        self.assertRedirects(res, reverse("payment_page", args=(payment.pk, )))

        res = self.client.get(reverse("payment_return", args=(payment.pk, )))
        self.assertEqual(res.status_code, 200)

        self.p1.refresh_from_db()

        # assert fields have been saved on model
        for f in [
                "first_name",
                "last_name",
                "location_address1",
                "location_address2",
                "location_zip",
                "location_city",
                "location_country",
        ]:
            self.assertEqual(getattr(self.p1, f),
                             self.donation_information_payload[f])

        # fake systempay webhook
        complete_payment(payment)
        donation_notification_listener(payment)
        send_donation_email.delay.assert_called_once()
Esempio n. 5
0
    def test_allocation_created_on_payment(self):
        payment = create_payment(
            person=self.p1,
            type=DonsConfig.PAYMENT_TYPE,
            price=10000,
            mode=SystemPayPaymentMode.id,
            meta={
                "allocation": 10000,
                "group_id": str(self.group.pk)
            },
        )

        complete_payment(payment)
        notify_status_change(payment)

        self.assertTrue(Operation.objects.exists())
        operation = Operation.objects.get()

        self.assertEqual(operation.amount, 10000)
        self.assertEqual(operation.group, self.group)