Coverage for website/sales/tests/test_services.py: 100.00%

44 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1import datetime 

2from unittest.mock import MagicMock 

3 

4from django.test import TestCase 

5from django.utils import timezone 

6 

7from freezegun import freeze_time 

8 

9from activemembers.models import Committee, MemberGroupMembership 

10from members.models import Member, Profile 

11from sales import services 

12from sales.models.product import Product, ProductList 

13from sales.models.shift import Shift 

14from sales.services import is_manager 

15 

16 

17@freeze_time("2021-01-01") 

18class SalesServicesTest(TestCase): 

19 fixtures = ["members.json", "member_groups.json", "products.json"] 

20 

21 @classmethod 

22 def setUpTestData(cls): 

23 cls.member = Member.objects.filter(last_name="Wiggers").first() 

24 

25 cls.beer = Product.objects.get(name="beer") 

26 cls.wine = Product.objects.get(name="wine") 

27 cls.soda = Product.objects.get(name="soda") 

28 

29 cls.normal = ProductList.objects.get( 

30 name="normal", 

31 ) 

32 cls.free = ProductList.objects.get( 

33 name="free", 

34 ) 

35 

36 cls.shift = Shift.objects.create( 

37 start=timezone.now(), 

38 end=timezone.now() + timezone.timedelta(hours=1), 

39 product_list=cls.normal, 

40 ) 

41 

42 def test_adult_member(self): 

43 Profile.objects.filter(user=self.member).update( 

44 birthday=datetime.datetime.strptime("2003-01-01", "%Y-%m-%d").date(), 

45 ) 

46 

47 self.assertTrue(services.is_adult(self.member)) 

48 

49 def test_underage_member(self): 

50 Profile.objects.filter(user=self.member).update( 

51 birthday=datetime.datetime.strptime("2003-01-02", "%Y-%m-%d").date(), 

52 ) 

53 

54 self.assertFalse(services.is_adult(self.member)) 

55 

56 def test_is_manager(self): 

57 self.member.is_superuser = False 

58 self.assertFalse(is_manager(self.member, self.shift)) 

59 

60 cie = Committee.objects.get(pk=1) 

61 MemberGroupMembership.objects.create(group=cie, member=self.member) 

62 self.shift.managers.add(cie) 

63 self.assertTrue(is_manager(self.member, self.shift)) 

64 

65 self.shift.managers.remove(cie) 

66 self.assertFalse(is_manager(self.member, self.shift)) 

67 

68 self.member.is_superuser = True 

69 self.assertTrue(is_manager(self.member, self.shift)) 

70 self.member.is_superuser = False 

71 self.member.has_perm = MagicMock() 

72 self.member.has_perm.return_value = True 

73 self.assertTrue(is_manager(self.member, self.shift))