From 348004320cff1c8347580976b2031c7cca538233 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Sun, 25 Feb 2024 18:58:26 +0100 Subject: [PATCH] Add tests for payment management commands Signed-off-by: Emmy D'Anello --- participation/tests.py | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/participation/tests.py b/participation/tests.py index 00aecc0..6df0c98 100644 --- a/participation/tests.py +++ b/participation/tests.py @@ -4,10 +4,13 @@ from django.contrib.auth.models import User from django.contrib.contenttypes.models import ContentType from django.contrib.sites.models import Site +from django.core import mail from django.core.files.uploadedfile import SimpleUploadedFile from django.core.management import call_command from django.test import LiveServerTestCase, override_settings, TestCase from django.urls import reverse +from django.utils import translation + from registration.models import CoachRegistration, Payment, StudentRegistration from .models import Participation, Team, Tournament @@ -874,6 +877,30 @@ class TestPayment(TestCase): payment.refresh_from_db() self.assertFalse(payment.valid) + def test_payment_reminder(self): + """ + Check that the payment reminder command works correctly. + """ + translation.activate('fr') + self.assertEqual(len(mail.outbox), 0) + + call_command('remind_payments') + self.assertEqual(len(mail.outbox), 2) + self.assertEqual(mail.outbox[0].subject, "[TFJM²] Rappel pour votre paiement") + + payment = Payment.objects.get(registrations=self.user.registration, final=False) + payment2 = Payment.objects.get(registrations=self.second_user.registration, final=False) + payment.type = 'other' + payment.valid = True + payment.save() + payment2.type = 'bank_transfer' + payment2.valid = None + payment2.save() + + mail.outbox = [] + call_command('remind_payments') + self.assertEqual(len(mail.outbox), 0) + @override_settings(HELLOASSO_TEST_ENDPOINT=True, ROOT_URLCONF="tfjm.helloasso.test_urls") class TestHelloAssoPayment(LiveServerTestCase): @@ -1076,6 +1103,32 @@ class TestHelloAssoPayment(LiveServerTestCase): checkout_intent = payment.get_checkout_intent() self.assertIn('order', checkout_intent) + def test_hello_asso_payment_verification(self): + """ + Check that a payment that is pending verification can be verified. + """ + with self.settings(HELLOASSO_TEST_ENDPOINT_URL=self.live_server_url): + payment = Payment.objects.get(registrations=self.user.registration, final=False) + self.assertFalse(payment.valid) + + call_command('check_hello_asso') + payment.refresh_from_db() + self.assertFalse(payment.valid) + + self.client.get(reverse('registration:payment_hello_asso', args=(payment.pk,)), + follow=True) + + payment.refresh_from_db() + payment.valid = None + payment.additional_information = "" + payment.save() + self.assertIsNone(payment.valid) + + call_command('check_hello_asso') + payment.refresh_from_db() + self.assertTrue(payment.valid) + self.assertTrue(payment.additional_information) + class TestAdmin(TestCase): def setUp(self) -> None: