Coverage for src/api/tests/test_validators.py: 100%

23 statements  

« prev     ^ index     » next       coverage.py v7.11.1, created at 2025-11-08 10:41 +0000

1import pytest 

2from django.utils import timezone 

3from rest_framework import serializers 

4from src.api.validators import validate_booking_window 

5 

6 

7def test_valid_booking_window_passes(): 

8 start = timezone.now() + timezone.timedelta(hours=1) 

9 end = start + timezone.timedelta(hours=1) 

10 assert validate_booking_window(start, end) is None 

11 

12 

13def test_start_after_end_raises(): 

14 start = timezone.now() + timezone.timedelta(hours=2) 

15 end = timezone.now() + timezone.timedelta(hours=1) 

16 with pytest.raises(serializers.ValidationError, match="must be before"): 

17 validate_booking_window(start, end) 

18 

19 

20def test_start_in_past_raises(): 

21 start = timezone.now() - timezone.timedelta(hours=1) 

22 end = timezone.now() + timezone.timedelta(hours=1) 

23 with pytest.raises(serializers.ValidationError, match="must be in the future"): 

24 validate_booking_window(start, end) 

25 

26def test_zero_duration_raises_error(): 

27 start = timezone.now() + timezone.timedelta(hours=1) 

28 end = start 

29 with pytest.raises(serializers.ValidationError, match="must be before"): 

30 validate_booking_window(start, end)