2
2
3
3
from django .test import TestCase
4
4
5
+ from appointment .models import Appointment , AppointmentRequest , Service , StaffMember
5
6
from appointment .tests .mixins .base_mixin import (
6
7
AppointmentMixin , AppointmentRequestMixin , AppointmentRescheduleHistoryMixin , ServiceMixin , StaffMemberMixin ,
7
8
UserMixin
8
9
)
10
+ from appointment .utils .db_helpers import get_user_model
9
11
10
12
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 (TestCase , UserMixin , StaffMemberMixin , ServiceMixin , AppointmentRequestMixin ,
14
+ AppointmentMixin , AppointmentRescheduleHistoryMixin ):
15
+ service1 = None
16
+ service2 = None
17
+ staff_member1 = None
18
+ staff_member2 = None
19
+ users = None
19
20
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
+ }
23
31
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
+ name = "Stargate Activation" , duration = timedelta (hours = 1 ), price = 100000 , description = "Activate the Stargate" )
37
+ cls .service2 = cls .create_service_ (
38
+ name = "Dial Home Device Repair" , duration = timedelta (hours = 2 ), price = 200000 , description = "Repair the DHD" )
39
+ # Mapping services to staff members
40
+ cls .staff_member1 = cls .create_staff_member_ (user = cls .users ['staff1' ], service = cls .service1 )
41
+ cls .staff_member2 = cls .create_staff_member_ (user = cls .users ['staff2' ], service = cls .service2 )
27
42
28
- def create_appt_request_for_sm1 (self , ** kwargs ):
43
+ @classmethod
44
+ def tearDownClass (cls ):
45
+ super ().tearDownClass ()
46
+ # Clean up any class-level resources
47
+ cls .clean_all_data ()
48
+
49
+ @classmethod
50
+ def clean_all_data (cls ):
51
+ Appointment .objects .all ().delete ()
52
+ AppointmentRequest .objects .all ().delete ()
53
+ StaffMember .objects .all ().delete ()
54
+ Service .objects .all ().delete ()
55
+ get_user_model ().objects .all ().delete ()
56
+
57
+ def create_appt_request_for_sm1 (self , service = None , staff_member = None , ** kwargs ):
29
58
"""Create an appointment request for staff_member1."""
30
- return self .create_appointment_request_ (service = self .service1 , staff_member = self .staff_member1 , ** kwargs )
59
+ service = service or self .service1
60
+ staff_member = staff_member or self .staff_member1
61
+ return self .create_appointment_request_ (service = service , staff_member = staff_member , ** kwargs )
31
62
32
- def create_appt_request_for_sm2 (self , ** kwargs ):
63
+ def create_appt_request_for_sm2 (self , service = None , staff_member = None , ** kwargs ):
33
64
"""Create an appointment request for staff_member2."""
34
- return self .create_appointment_request_ (service = self .service2 , staff_member = self .staff_member2 , ** kwargs )
65
+ service = service or self .service2
66
+ staff_member = staff_member or self .staff_member2
67
+ return self .create_appointment_request_ (service = service , staff_member = staff_member , ** kwargs )
35
68
36
- def create_appointment_for_user1 (self , appointment_request = None ):
69
+ def create_appt_for_sm1 (self , appointment_request = None ):
37
70
if not appointment_request :
38
71
appointment_request = self .create_appt_request_for_sm1 ()
39
- return self .create_appointment_ (user = self .client1 , appointment_request = appointment_request )
72
+ return self .create_appointment_ (user = self .users [ ' client1' ] , appointment_request = appointment_request )
40
73
41
- def create_appointment_for_user2 (self , appointment_request = None ):
74
+ def create_appt_for_sm2 (self , appointment_request = None ):
42
75
if not appointment_request :
43
76
appointment_request = self .create_appt_request_for_sm2 ()
44
- return self .create_appointment_ (user = self .client2 , appointment_request = appointment_request )
77
+ return self .create_appointment_ (user = self .users [ ' client2' ] , appointment_request = appointment_request )
45
78
46
- def create_appointment_reschedule_for_user1 (self , appointment_request = None , reason_for_rescheduling = "Reason " ):
79
+ def create_appt_reschedule_for_sm1 (self , appointment_request = None , reason_for_rescheduling = "Gate Malfunction " ):
47
80
if not appointment_request :
48
81
appointment_request = self .create_appt_request_for_sm1 ()
49
- date_ = appointment_request .date + timedelta (days = 1 )
82
+ date_ = appointment_request .date + timedelta (days = 7 )
50
83
return self .create_reschedule_history_ (
51
84
appointment_request = appointment_request ,
52
85
date_ = date_ ,
@@ -59,23 +92,21 @@ def create_appointment_reschedule_for_user1(self, appointment_request=None, reas
59
92
def need_normal_login (self ):
60
93
self .client .force_login (self .create_user_ ())
61
94
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 )
95
+ def need_staff_login (self ):
96
+ self .staff = self .users ['staff1' ]
97
+ self .staff .is_staff = True
98
+ self .staff .save ()
99
+ self .client .force_login (self .staff )
70
100
71
101
def need_superuser_login (self ):
72
- self .user1 .is_superuser = True
73
- self .user1 .save ()
74
- self .client .force_login (self .user1 )
102
+ self .superuser = self .users ['superuser' ]
103
+ self .superuser .is_superuser = True
104
+ self .superuser .save ()
105
+ self .client .force_login (self .superuser )
75
106
76
- def clean_staff_member_objects (self , user = None ):
107
+ def clean_staff_member_objects (self , staff = None ):
77
108
"""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 )
109
+ if staff is None :
110
+ staff = self .users [ 'staff1' ]
111
+ self .clean_appointment_for_user_ ( staff )
112
+ self .clean_appt_request_for_user_ ( staff )
0 commit comments