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

22 statements  

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

1import pytest 

2from decimal import Decimal 

3from django.utils import timezone 

4from src.api.models import ParkingLot, Spot, Booking 

5from src.api.services import PaymentService 

6 

7 

8@pytest.mark.django_db 

9def test_calculate_price_correct(): 

10 lot = ParkingLot.objects.create(name="LotA", city="Kyiv", street="Main") 

11 spot = Spot.objects.create(number="S1", lot=lot) 

12 booking = Booking(spot=spot, 

13 start_at=timezone.now(), 

14 end_at=timezone.now() + timezone.timedelta(hours=3)) 

15 result = PaymentService.calculate_price(booking) 

16 assert result == Decimal("90.00") # 30 * 3 

17 

18 

19@pytest.mark.django_db 

20def test_process_refund_returns_mock(): 

21 lot = ParkingLot.objects.create(name="LotA", city="Kyiv", street="Main") 

22 spot = Spot.objects.create(number="S1", lot=lot) 

23 booking = Booking.objects.create( 

24 spot=spot, 

25 start_at=timezone.now(), 

26 end_at=timezone.now() + timezone.timedelta(hours=2), 

27 ) 

28 refund = PaymentService.process_refund(booking) 

29 assert refund["status"] == "mock" 

30 assert "booking_id" in refund 

31 

32 

33def test_verify_payment_always_returns_true(): 

34 assert PaymentService.verify_payment("123", "sig", "data") is True