Skip to content

Commit 92e2ec0

Browse files
committed
Rewrote the basetest class (stargate theme, I'm a great fan)
1 parent b94f031 commit 92e2ec0

File tree

2 files changed

+71
-46
lines changed

2 files changed

+71
-46
lines changed
Lines changed: 62 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,56 @@
11
from datetime import timedelta
22

3-
from django.test import TestCase
3+
from django.test import TransactionTestCase
44

5+
from appointment.models import Appointment, AppointmentRequest, Service, StaffMember
56
from appointment.tests.mixins.base_mixin import (
67
AppointmentMixin, AppointmentRequestMixin, AppointmentRescheduleHistoryMixin, ServiceMixin, StaffMemberMixin,
78
UserMixin
89
)
10+
from appointment.utils.db_helpers import get_user_model
911

1012

11-
class BaseTest(TestCase, UserMixin, StaffMemberMixin, ServiceMixin, AppointmentRequestMixin, AppointmentMixin,
12-
AppointmentRescheduleHistoryMixin):
13-
def setUp(self):
14-
# Users
15-
self.user1 = self.create_user_(email="[email protected]", username="tester1")
16-
self.user2 = self.create_user_(first_name="Tester2", email="[email protected]", username="tester2")
17-
self.client1 = self.create_user_(first_name="Client1", email="[email protected]", username="client1")
18-
self.client2 = self.create_user_(first_name="Client2", email="[email protected]", username="client2")
13+
class BaseTest(TransactionTestCase, UserMixin, StaffMemberMixin, ServiceMixin, AppointmentRequestMixin,
14+
AppointmentMixin, AppointmentRescheduleHistoryMixin):
15+
service1 = None
16+
service2 = None
17+
staff_member1 = None
18+
staff_member2 = None
19+
users = None
1920

20-
# Services
21-
self.service1 = self.create_service_()
22-
self.service2 = self.create_service_(name="Service 2")
21+
USER_SPECS = {
22+
'staff1': {"first_name": "Daniel", "email": "[email protected]",
23+
"username": "daniel.jackson"},
24+
'staff2': {"first_name": "Samantha", "email": "[email protected]",
25+
"username": "samantha.carter"},
26+
'client1': {"first_name": "Georges", "email": "[email protected]",
27+
"username": "georges.hammond"},
28+
'client2': {"first_name": "Tealc", "email": "[email protected]", "username": "tealc.kree"},
29+
'superuser': {"first_name": "Jack", "email": "[email protected]", "username": "jack.o.neill"},
30+
}
2331

24-
# Staff Members
25-
self.staff_member1 = self.create_staff_member_(user=self.user1, service=self.service1)
26-
self.staff_member2 = self.create_staff_member_(user=self.user2, service=self.service2)
32+
@classmethod
33+
def setUpTestData(cls):
34+
cls.users = {key: cls.create_user_(**details) for key, details in cls.USER_SPECS.items()}
35+
cls.service1 = cls.create_service_()
36+
cls.service2 = cls.create_service_(name="Dial Home Device Repair", duration=timedelta(hours=2), price=200)
37+
# Mapping services to staff members
38+
cls.staff_member1 = cls.create_staff_member_(user=cls.users['staff1'], service=cls.service1)
39+
cls.staff_member2 = cls.create_staff_member_(user=cls.users['staff2'], service=cls.service2)
40+
41+
@classmethod
42+
def tearDownClass(cls):
43+
super().tearDownClass()
44+
# Clean up any class-level resources
45+
cls.clean_all_data()
46+
47+
@classmethod
48+
def clean_all_data(cls):
49+
Appointment.objects.all().delete()
50+
AppointmentRequest.objects.all().delete()
51+
StaffMember.objects.all().delete()
52+
Service.objects.all().delete()
53+
get_user_model().objects.all().delete()
2754

2855
def create_appt_request_for_sm1(self, **kwargs):
2956
"""Create an appointment request for staff_member1."""
@@ -33,20 +60,20 @@ def create_appt_request_for_sm2(self, **kwargs):
3360
"""Create an appointment request for staff_member2."""
3461
return self.create_appointment_request_(service=self.service2, staff_member=self.staff_member2, **kwargs)
3562

36-
def create_appointment_for_user1(self, appointment_request=None):
63+
def create_appt_for_sm1(self, appointment_request=None):
3764
if not appointment_request:
3865
appointment_request = self.create_appt_request_for_sm1()
39-
return self.create_appointment_(user=self.client1, appointment_request=appointment_request)
66+
return self.create_appointment_(user=self.users['client1'], appointment_request=appointment_request)
4067

41-
def create_appointment_for_user2(self, appointment_request=None):
68+
def create_appt_for_sm2(self, appointment_request=None):
4269
if not appointment_request:
4370
appointment_request = self.create_appt_request_for_sm2()
44-
return self.create_appointment_(user=self.client2, appointment_request=appointment_request)
71+
return self.create_appointment_(user=self.users['client2'], appointment_request=appointment_request)
4572

46-
def create_appointment_reschedule_for_user1(self, appointment_request=None, reason_for_rescheduling="Reason"):
73+
def create_appt_reschedule_for_sm1(self, appointment_request=None, reason_for_rescheduling="Gate Malfunction"):
4774
if not appointment_request:
4875
appointment_request = self.create_appt_request_for_sm1()
49-
date_ = appointment_request.date + timedelta(days=1)
76+
date_ = appointment_request.date + timedelta(days=7)
5077
return self.create_reschedule_history_(
5178
appointment_request=appointment_request,
5279
date_=date_,
@@ -59,23 +86,21 @@ def create_appointment_reschedule_for_user1(self, appointment_request=None, reas
5986
def need_normal_login(self):
6087
self.client.force_login(self.create_user_())
6188

62-
def need_staff_login(self, user=None):
63-
if user is not None:
64-
user.is_staff = True
65-
user.save()
66-
self.client.force_login(user)
67-
self.user1.is_staff = True
68-
self.user1.save()
69-
self.client.force_login(self.user1)
89+
def need_staff_login(self):
90+
self.staff = self.users['staff1']
91+
self.staff.is_staff = True
92+
self.staff.save()
93+
self.client.force_login(self.staff)
7094

7195
def need_superuser_login(self):
72-
self.user1.is_superuser = True
73-
self.user1.save()
74-
self.client.force_login(self.user1)
96+
self.superuser = self.users['superuser']
97+
self.superuser.is_superuser = True
98+
self.superuser.save()
99+
self.client.force_login(self.superuser)
75100

76-
def clean_staff_member_objects(self, user=None):
101+
def clean_staff_member_objects(self, staff=None):
77102
"""Delete all AppointmentRequests and Appointments linked to the StaffMember instance of self.user1."""
78-
if user is None:
79-
user = self.user1
80-
self.clean_appointment_for_user(user)
81-
self.clean_appt_request_for_user(user)
103+
if staff is None:
104+
staff = self.users['staff1']
105+
self.clean_appointment_for_user_(staff)
106+
self.clean_appt_request_for_user_(staff)

appointment/tests/mixins/base_mixin.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ def __init__(self):
1111
pass
1212

1313
@classmethod
14-
def create_user_(cls, first_name="Tester", email="[email protected]", username="test_user",
15-
password="Kfdqi3!?n"):
16-
user_model = get_user_model()
17-
return user_model.objects.create_user(
14+
def create_user_(cls, first_name="Janet", email="[email protected]", username="janet.fraiser",
15+
password="G0a'uld$Emp1re"):
16+
return get_user_model().objects.create_user(
1817
first_name=first_name,
1918
email=email,
2019
username=username,
@@ -27,7 +26,7 @@ def __init__(self):
2726
pass
2827

2928
@classmethod
30-
def create_service_(cls, name="Test Service", duration=timedelta(hours=1), price=100):
29+
def create_service_(cls, name="Quantum Mirror Assessment", duration=timedelta(hours=1), price=100):
3130
return Service.objects.create(
3231
name=name,
3332
duration=duration,
@@ -62,7 +61,7 @@ def create_appointment_request_(cls, service, staff_member, date_=date.today(),
6261
)
6362

6463
@classmethod
65-
def clean_appt_request_for_user(cls, user):
64+
def clean_appt_request_for_user_(cls, user):
6665
AppointmentRequest.objects.filter(staff_member__user=user).delete()
6766

6867

@@ -71,7 +70,8 @@ def __init__(self):
7170
pass
7271

7372
@classmethod
74-
def create_appointment_(cls, user, appointment_request, phone="1234567890", address="Some City, Some State"):
73+
def create_appointment_(cls, user, appointment_request, phone="1234567890",
74+
address="Stargate Command, Cheyenne Mountain Complex, Colorado Springs, CO"):
7575
return Appointment.objects.create(
7676
client=user,
7777
appointment_request=appointment_request,
@@ -80,7 +80,7 @@ def create_appointment_(cls, user, appointment_request, phone="1234567890",
8080
)
8181

8282
@classmethod
83-
def clean_appointment_for_user(cls, user):
83+
def clean_appointment_for_user_(cls, user):
8484
Appointment.objects.filter(client=user).delete()
8585

8686

@@ -90,7 +90,7 @@ def __init__(self):
9090

9191
@classmethod
9292
def create_reschedule_history_(cls, appointment_request, date_, start_time, end_time, staff_member,
93-
reason_for_rescheduling=""):
93+
reason_for_rescheduling="Zat'nik'tel Discharge"):
9494
return AppointmentRescheduleHistory.objects.create(
9595
appointment_request=appointment_request,
9696
date=date_,

0 commit comments

Comments
 (0)