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

1import datetime 

2 

3from django.core.exceptions import ValidationError 

4from django.test import TestCase 

5from django.utils import timezone 

6 

7from members.models import Member 

8 

9from ..models import Reimbursement 

10 

11 

12class ReimbursementModelTest(TestCase): 

13 def setUp(self): 

14 self.user = Member.objects.create_user(username="testuser", password="12345") 

15 

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 ) 

28 

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 ) 

41 

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 ) 

50 

51 reimbursement.clean()