Skip to content

Commit fcadece

Browse files
committed
Fix dependant tests
1 parent 98fe67e commit fcadece

File tree

2 files changed

+58
-28
lines changed

2 files changed

+58
-28
lines changed

appointment/models.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -454,30 +454,16 @@ def save(self, *args, **kwargs):
454454

455455
if self.id_request is None:
456456
self.id_request = f"{get_timestamp()}{self.appointment_request.id}{generate_random_id()}"
457-
458-
try:
459-
# Ensure `amount_to_pay` is a Decimal and handle both int and float inputs
460-
if self.amount_to_pay is None:
461-
self.amount_to_pay = self._calculate_amount_to_pay()
462-
463-
self.amount_to_pay = self._to_decimal(self.amount_to_pay)
464-
except InvalidOperation:
465-
raise ValidationError("Invalid amount format for payment.")
466-
457+
if self.amount_to_pay is None or self.amount_to_pay == 0:
458+
payment_type = self.appointment_request.payment_type
459+
if payment_type == 'full':
460+
self.amount_to_pay = self.appointment_request.get_service_price()
461+
elif payment_type == 'down':
462+
self.amount_to_pay = self.appointment_request.get_service_down_payment()
463+
else:
464+
self.amount_to_pay = 0
467465
return super().save(*args, **kwargs)
468466

469-
def _calculate_amount_to_pay(self):
470-
payment_type = self.appointment_request.payment_type
471-
if payment_type == 'full':
472-
return self.appointment_request.get_service_price()
473-
elif payment_type == 'down':
474-
return self.appointment_request.get_service_down_payment()
475-
else:
476-
return Decimal('0.00')
477-
478-
def _to_decimal(self, value):
479-
return Decimal(f"{value}").quantize(Decimal('0.01'))
480-
481467
def get_client_name(self):
482468
if hasattr(self.client, 'get_full_name') and callable(getattr(self.client, 'get_full_name')):
483469
name = self.client.get_full_name()

appointment/tests/test_services.py

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,30 @@ def tearDownClass(cls):
4141

4242
def setUp(self):
4343
self.tomorrow = timezone.now().date() + datetime.timedelta(days=1)
44-
ar = self.create_appt_request_for_sm1(date_=self.tomorrow)
44+
ar = self.create_appt_request_for_sm1(date_=self.tomorrow, start_time=time(11, 0), end_time=time(12, 0))
4545
self.appointment = self.create_appt_for_sm1(appointment_request=ar)
4646

47+
@override_settings(DEBUG=True)
48+
def tearDown(self):
49+
Config.objects.all().delete()
50+
super().tearDown()
51+
cache.clear()
52+
4753
def test_get_available_slots(self):
4854
slots = get_available_slots(self.tomorrow, [self.appointment])
4955
self.assertIsInstance(slots, list)
50-
self.assertNotIn('09:00 AM', slots)
56+
self.assertNotIn('11:00 AM', slots)
5157

5258
def test_get_available_slots_with_config(self):
5359
Config.objects.create(
54-
lead_time=datetime.time(8, 0),
55-
finish_time=datetime.time(17, 0),
60+
lead_time=datetime.time(11, 0),
61+
finish_time=datetime.time(15, 0),
5662
slot_duration=30,
5763
appointment_buffer_time=2.0
5864
)
5965
slots = get_available_slots(self.tomorrow, [self.appointment])
6066
self.assertIsInstance(slots, list)
61-
self.assertNotIn('09:00 AM', slots)
67+
self.assertNotIn('11:00 AM', slots)
6268

6369

6470
class FetchUserAppointmentsTests(BaseTest):
@@ -244,6 +250,13 @@ def test_regular_user_with_non_existent_staff_user_id(self):
244250

245251

246252
class HandleEntityManagementRequestTests(BaseTest):
253+
@classmethod
254+
def setUpClass(cls):
255+
super().setUpClass()
256+
257+
@classmethod
258+
def tearDownClass(cls):
259+
super().tearDownClass()
247260

248261
def setUp(self):
249262
super().setUp()
@@ -254,6 +267,10 @@ def setUp(self):
254267
self.request = self.factory.post('/')
255268
self.request.user = self.staff_member1.user
256269

270+
def tearDown(self):
271+
WorkingHours.objects.all().delete()
272+
super().tearDown()
273+
257274
def test_staff_member_none(self):
258275
"""A day off cannot be created for a staff member that doesn't exist."""
259276
response = handle_entity_management_request(self.request, None, 'day_off')
@@ -318,10 +335,21 @@ def test_working_hours_post(self):
318335

319336

320337
class HandleWorkingHoursFormTest(BaseTest):
338+
@classmethod
339+
def setUpClass(cls):
340+
super().setUpClass()
341+
342+
@classmethod
343+
def tearDownClass(cls):
344+
super().tearDownClass()
321345

322346
def setUp(self):
323347
super().setUp()
324348

349+
def tearDown(self):
350+
WorkingHours.objects.all().delete()
351+
super().tearDown()
352+
325353
def test_add_working_hours(self):
326354
"""Test if working hours can be added."""
327355
response = handle_working_hours_form(self.staff_member1, 1, '09:00 AM', '05:00 PM', True)
@@ -535,6 +563,14 @@ def setUp(self):
535563
Config.objects.create(slot_duration=60, lead_time=datetime.time(9, 0), finish_time=datetime.time(17, 0),
536564
appointment_buffer_time=0)
537565

566+
@override_settings(DEBUG=True)
567+
def tearDown(self):
568+
WorkingHours.objects.all().delete()
569+
DayOff.objects.all().delete()
570+
Config.objects.all().delete()
571+
cache.clear()
572+
super().tearDown()
573+
538574
def test_day_off(self):
539575
"""Test if a day off is handled correctly when getting available slots."""
540576
# Ask for slots for it, and it should return an empty list since next Monday is a day off
@@ -587,6 +623,7 @@ def test_booked_slots(self):
587623
hour in range(9, 17) if hour != 10]
588624
self.assertEqual(slots, expected_slots)
589625

626+
@override_settings(DEBUG=True)
590627
def test_no_working_hours(self):
591628
"""If a staff member doesn't have working hours on a given day, no slots should be available."""
592629
# Let's ask for slots on a Thursday, which the staff member doesn't work
@@ -856,6 +893,14 @@ def test_get_finish_button_text_paid_service(self):
856893

857894
class SlotAvailabilityTest(BaseTest, ConfigMixin):
858895

896+
@classmethod
897+
def setUpClass(cls):
898+
super().setUpClass()
899+
900+
@classmethod
901+
def tearDownClass(cls):
902+
super().tearDownClass()
903+
859904
def setUp(self):
860905
self.service = self.create_service_(duration=timedelta(hours=2))
861906
self.config = self.create_config_(lead_time=time(11, 0), finish_time=time(15, 0), slot_duration=120)
@@ -864,7 +909,6 @@ def setUp(self):
864909
@override_settings(DEBUG=True)
865910
def tearDown(self):
866911
self.service.delete()
867-
self.config.delete()
868912
cache.clear()
869913

870914
def test_slot_availability_without_appointments(self):

0 commit comments

Comments
 (0)