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
« 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
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
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
33def test_verify_payment_always_returns_true():
34 assert PaymentService.verify_payment("123", "sig", "data") is True