Coverage for website/reimbursements/tests/test_models.py: 100.00%
24 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1import datetime
3from django.core.exceptions import ValidationError
4from django.test import TestCase
5from django.utils import timezone
7from members.models import Member
9from ..models import Reimbursement
12class ReimbursementModelTest(TestCase):
13 def setUp(self):
14 self.user = Member.objects.create_user(username="testuser", password="12345")
16 def test_future_date_incurred(self):
17 reimbursement = Reimbursement(
18 created=timezone.now(),
19 date_incurred=timezone.now().date() + datetime.timedelta(days=1),
20 )
21 with self.assertRaises(ValidationError) as context:
22 reimbursement.clean()
23 self.assertIn("date_incurred", context.exception.message_dict)
24 self.assertEqual(
25 context.exception.message_dict["date_incurred"],
26 ["The date incurred cannot be in the future."],
27 )
29 def test_denied_verdict_without_clarification(self):
30 reimbursement = Reimbursement(
31 created=timezone.now(),
32 verdict=Reimbursement.Verdict.DENIED,
33 )
34 with self.assertRaises(ValidationError) as context:
35 reimbursement.clean()
36 self.assertIn("verdict_clarification", context.exception.message_dict)
37 self.assertEqual(
38 context.exception.message_dict["verdict_clarification"],
39 ["You must provide a reason for the denial."],
40 )
42 def test_valid_reimbursement(self):
43 reimbursement = Reimbursement(
44 created=timezone.now(),
45 date_incurred=timezone.now().date(),
46 verdict=Reimbursement.Verdict.APPROVED,
47 evaluated_by=self.user,
48 verdict_clarification="daslkfjlkdsajfkdsajfldsakfjldska",
49 )
51 reimbursement.clean()