diff --git a/billing/tests.py b/billing/tests.py index 9964be4..329396c 100644 --- a/billing/tests.py +++ b/billing/tests.py @@ -3,7 +3,7 @@ from django.urls import reverse from rest_framework import status from rest_framework.test import APIClient from django.contrib.auth import get_user_model -from .models import Topup +from .models import Topup, Payment from .serializers import TopupSerializer from django.utils import timezone from datetime import timedelta @@ -205,3 +205,47 @@ class TopupTests(TestCase): response = self.client.delete(url, format="json") self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Topup.objects.count(), 0) + + +class PaymentTests(TestCase): + def setUp(self): + self.client = APIClient() + self.real_user = User.objects.create_user( + username="testuser", + password="testpassword", + first_name=REAL_USER_FIRST_NAME, + last_name=REAL_USER_LAST_NAME, + acc_no="7770000010629", + is_admin=True, + ) + self.user = User.objects.create_user( + username="plskillme", + password="modewasgayithink", + first_name="mode", + last_name="hussain", + acc_no="1122334455", + ) + self.admin_user = User.objects.create_superuser( + username="adminuser", + password="adminpassword", + email="admin@example.com", + first_name="Admin", + last_name="User", + acc_no="987654321", + ) + self.client.force_authenticate(user=self.real_user) + + def test_cancel_payment(self): + payment = Payment.objects.create( + amount=100.00, + user=self.real_user, + status="PENDING", + number_of_months=1, + paid=False, + ) + url = reverse("cancel-payment", kwargs={"pk": payment.pk}) + response = self.client.patch(url, format="json") + self.assertEqual(response.status_code, status.HTTP_200_OK) + payment.refresh_from_db() + self.assertEqual(payment.status, "CANCELLED") + self.assertFalse(payment.paid)