29
29
from appointment .tests .base .base_test import BaseTest
30
30
from appointment .utils .db_helpers import Service , WorkingHours , create_user_with_username
31
31
from appointment .utils .error_codes import ErrorCode
32
- from appointment .views import (
33
- create_appointment , get_appointment_data_from_post_request , get_client_data_from_post ,
34
- redirect_to_payment_or_thank_you_page , verify_user_and_login
35
- )
32
+ from appointment .views import create_appointment , redirect_to_payment_or_thank_you_page , verify_user_and_login
36
33
37
34
38
35
class SlotTestCase (BaseTest ):
@@ -43,21 +40,23 @@ def setUp(self):
43
40
44
41
def test_get_available_slots_ajax (self ):
45
42
"""get_available_slots_ajax view should return a JSON response with available slots for the selected date."""
46
- response = self .client .get (self .url , {'selected_date' : date .today ().isoformat ()},
43
+ response = self .client .get (self .url , {'selected_date' : date .today ().isoformat (), 'staff_member' : self . staff_member1 . id },
47
44
HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' )
48
- self .assertEqual (response .status_code , 403 )
49
45
response_data = response .json ()
50
46
self .assertIn ('date_chosen' , response_data )
51
47
self .assertIn ('available_slots' , response_data )
52
48
self .assertFalse (response_data .get ('error' ))
53
49
54
- def test_get_available_slots_ajax_past_date (self ):
50
+ def test_get_available_slots_ajax_invalid_form (self ):
55
51
"""get_available_slots_ajax view should return an error if the selected date is in the past."""
56
52
past_date = (date .today () - timedelta (days = 1 )).isoformat ()
57
53
response = self .client .get (self .url , {'selected_date' : past_date }, HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' )
58
- self .assertEqual (response .status_code , 200 )
59
54
self .assertEqual (response .json ()['error' ], True )
60
55
self .assertEqual (response .json ()['message' ], 'Date is in the past' )
56
+ # invalid staff id
57
+ response = self .client .get (self .url , {'selected_date' : date .today (), 'staff_member' : 999 }, HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' )
58
+ self .assertEqual (response .json ()['error' ], True )
59
+ self .assertEqual (response .json ()['message' ], 'Staff member does not exist' )
61
60
62
61
63
62
class AppointmentRequestTestCase (BaseTest ):
@@ -1043,114 +1042,6 @@ def test_notify_admin_about_reschedule_called(self, mock_notify_admin):
1043
1042
self .assertTrue (mock_notify_admin .called )
1044
1043
1045
1044
1046
- class GetAppointmentDataFromPostRequestTests (BaseTest ):
1047
- def setUp (self ):
1048
- self .factory = RequestFactory ()
1049
- self .post_data = {
1050
- 'phone' : '1234567890' ,
1051
- 'want_reminder' : 'on' ,
1052
- 'address' : '123 Test St, Test City' ,
1053
- 'additional_info' : 'Please ring the bell.'
1054
- }
1055
-
1056
- def test_get_appointment_data_from_post_request_with_data (self ):
1057
- """Test retrieving appointment data from a POST request with all data provided."""
1058
- request = self .factory .post ('/fake-url/' , self .post_data )
1059
-
1060
- appointment_data = get_appointment_data_from_post_request (request )
1061
-
1062
- self .assertEqual (appointment_data ['phone' ], self .post_data ['phone' ])
1063
- self .assertTrue (appointment_data ['want_reminder' ])
1064
- self .assertEqual (appointment_data ['address' ], self .post_data ['address' ])
1065
- self .assertEqual (appointment_data ['additional_info' ], self .post_data ['additional_info' ])
1066
-
1067
- def test_get_appointment_data_from_post_request_partial_data (self ):
1068
- """Test retrieving appointment data from a POST request with partial data provided."""
1069
- partial_post_data = {
1070
- 'phone' : '1234567890' ,
1071
- # 'want_reminder' omitted to simulate unchecked checkbox
1072
- 'address' : '123 Test St, Test City' ,
1073
- # 'additional_info' omitted to simulate empty field
1074
- }
1075
- request = self .factory .post ('/fake-url/' , partial_post_data )
1076
-
1077
- appointment_data = get_appointment_data_from_post_request (request )
1078
-
1079
- self .assertEqual (appointment_data ['phone' ], partial_post_data ['phone' ])
1080
- self .assertFalse (appointment_data ['want_reminder' ], "want_reminder should be False if not 'on'" )
1081
- self .assertEqual (appointment_data ['address' ], partial_post_data ['address' ])
1082
- self .assertEqual (appointment_data ['additional_info' ], None , "additional_info should be None if not provided" )
1083
-
1084
- def test_get_appointment_data_from_post_request_missing_data (self ):
1085
- """Test retrieving appointment data from a POST request with missing data."""
1086
- missing_data_post = {}
1087
- request = self .factory .post ('/fake-url/' , missing_data_post )
1088
-
1089
- appointment_data = get_appointment_data_from_post_request (request )
1090
-
1091
- self .assertEqual (appointment_data ['phone' ], None , "phone should be None if not provided" )
1092
- self .assertFalse (appointment_data ['want_reminder' ], "want_reminder should be False if not provided" )
1093
- self .assertEqual (appointment_data ['address' ], None , "address should be None if not provided" )
1094
- self .assertEqual (appointment_data ['additional_info' ], None , "additional_info should be None if not provided" )
1095
-
1096
-
1097
- class GetClientDataFromPostTests (BaseTest ):
1098
- def setUp (self ):
1099
- self .factory = RequestFactory ()
1100
-
1101
- def test_get_client_data_with_full_data (self ):
1102
- """Test retrieving client data from a POST request with all fields provided."""
1103
- post_data = {
1104
- 'name' : 'John Doe' ,
1105
-
1106
- }
1107
- request = self .factory .post ('/fake-url/' , post_data )
1108
-
1109
- client_data = get_client_data_from_post (request )
1110
-
1111
- self .assertEqual (client_data ['name' ], post_data ['name' ])
1112
- self .assertEqual (client_data ['email' ], post_data ['email' ])
1113
-
1114
- def test_get_client_data_with_missing_name (self ):
1115
- """Test retrieving client data from a POST request with the name missing."""
1116
- post_data = {
1117
- # 'name' is missing
1118
-
1119
- }
1120
- request = self .factory .post ('/fake-url/' , post_data )
1121
-
1122
- client_data = get_client_data_from_post (request )
1123
-
1124
- self .assertIsNone (client_data ['name' ], "name should be None if not provided" )
1125
- self .assertEqual (client_data ['email' ], post_data ['email' ])
1126
-
1127
- def test_get_client_data_with_missing_email (self ):
1128
- """Test retrieving client data from a POST request with the email missing."""
1129
- post_data = {
1130
- 'name' : 'John Doe' ,
1131
- # 'email' is missing
1132
- }
1133
- request = self .factory .post ('/fake-url/' , post_data )
1134
-
1135
- client_data = get_client_data_from_post (request )
1136
-
1137
- self .assertEqual (client_data ['name' ], post_data ['name' ])
1138
- self .assertIsNone (client_data ['email' ], "email should be None if not provided" )
1139
-
1140
- def test_get_client_data_with_empty_fields (self ):
1141
- """Test retrieving client data from a POST request with empty fields."""
1142
- post_data = {
1143
- 'name' : '' ,
1144
- 'email' : '' ,
1145
- }
1146
- request = self .factory .post ('/fake-url/' , post_data )
1147
-
1148
- client_data = get_client_data_from_post (request )
1149
-
1150
- self .assertEqual (client_data ['name' ], '' , "name should be empty string if provided as such" )
1151
- self .assertEqual (client_data ['email' ], '' , "email should be empty string if provided as such" )
1152
-
1153
-
1154
1045
class RedirectToPaymentOrThankYouPageTests (BaseTest ):
1155
1046
def setUp (self ):
1156
1047
super ().setUp ()
0 commit comments