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
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1import datetime
2from unittest.mock import MagicMock
4from django.test import TestCase
5from django.utils import timezone
7from freezegun import freeze_time
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
17@freeze_time("2021-01-01")
18class SalesServicesTest(TestCase):
19 fixtures = ["members.json", "member_groups.json", "products.json"]
21 @classmethod
22 def setUpTestData(cls):
23 cls.member = Member.objects.filter(last_name="Wiggers").first()
25 cls.beer = Product.objects.get(name="beer")
26 cls.wine = Product.objects.get(name="wine")
27 cls.soda = Product.objects.get(name="soda")
29 cls.normal = ProductList.objects.get(
30 name="normal",
31 )
32 cls.free = ProductList.objects.get(
33 name="free",
34 )
36 cls.shift = Shift.objects.create(
37 start=timezone.now(),
38 end=timezone.now() + timezone.timedelta(hours=1),
39 product_list=cls.normal,
40 )
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 )
47 self.assertTrue(services.is_adult(self.member))
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 )
54 self.assertFalse(services.is_adult(self.member))
56 def test_is_manager(self):
57 self.member.is_superuser = False
58 self.assertFalse(is_manager(self.member, self.shift))
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))
65 self.shift.managers.remove(cie)
66 self.assertFalse(is_manager(self.member, self.shift))
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))