1
1
from datetime import timedelta
2
2
3
- from django .test import TestCase
3
+ from django .test import TransactionTestCase
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 (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
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
+ 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 ()
27
54
28
55
def create_appt_request_for_sm1 (self , ** kwargs ):
29
56
"""Create an appointment request for staff_member1."""
@@ -33,20 +60,20 @@ def create_appt_request_for_sm2(self, **kwargs):
33
60
"""Create an appointment request for staff_member2."""
34
61
return self .create_appointment_request_ (service = self .service2 , staff_member = self .staff_member2 , ** kwargs )
35
62
36
- def create_appointment_for_user1 (self , appointment_request = None ):
63
+ def create_appt_for_sm1 (self , appointment_request = None ):
37
64
if not appointment_request :
38
65
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 )
40
67
41
- def create_appointment_for_user2 (self , appointment_request = None ):
68
+ def create_appt_for_sm2 (self , appointment_request = None ):
42
69
if not appointment_request :
43
70
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 )
45
72
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 " ):
47
74
if not appointment_request :
48
75
appointment_request = self .create_appt_request_for_sm1 ()
49
- date_ = appointment_request .date + timedelta (days = 1 )
76
+ date_ = appointment_request .date + timedelta (days = 7 )
50
77
return self .create_reschedule_history_ (
51
78
appointment_request = appointment_request ,
52
79
date_ = date_ ,
@@ -59,23 +86,21 @@ def create_appointment_reschedule_for_user1(self, appointment_request=None, reas
59
86
def need_normal_login (self ):
60
87
self .client .force_login (self .create_user_ ())
61
88
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 )
70
94
71
95
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 )
75
100
76
- def clean_staff_member_objects (self , user = None ):
101
+ def clean_staff_member_objects (self , staff = None ):
77
102
"""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 )
0 commit comments