This commit is contained in:
52
backend/modules/fleet/tests/test_services.py
Normal file
52
backend/modules/fleet/tests/test_services.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import uuid
|
||||
from django.test import TestCase
|
||||
from django.contrib.auth import get_user_model
|
||||
from modules.fleet.services import VehicleService
|
||||
from modules.fleet.models import Vehicle, WorkOrder, VehicleServiceRecord
|
||||
|
||||
|
||||
class FleetServiceTests(TestCase):
|
||||
def setUp(self):
|
||||
User = get_user_model()
|
||||
self.user = User.objects.create_user(username="tech2", email=f"tech2+{uuid.uuid4()}@example.test", password="pass")
|
||||
self.vehicle = Vehicle.objects.create(
|
||||
registration_number=f"RI-{uuid.uuid4().hex[:6].upper()}",
|
||||
make="VW",
|
||||
model="Polo",
|
||||
current_mileage=5000,
|
||||
service_interval_km=10000,
|
||||
assigned_servicer=self.user
|
||||
)
|
||||
|
||||
def test_create_work_order_via_service(self):
|
||||
data = {"vehicle": self.vehicle, "creator": self.user, "start_mileage": 5000, "end_mileage": 5200, "purpose": "Delivery"}
|
||||
wo = VehicleService.create_work_order(data)
|
||||
self.vehicle.refresh_from_db()
|
||||
self.assertEqual(self.vehicle.current_mileage, 5200)
|
||||
self.assertEqual(wo.distance, 200)
|
||||
|
||||
def test_create_service_record_via_service(self):
|
||||
data = {"vehicle": self.vehicle, "performed_by": self.user, "description": "Brake pads", "mileage": 5200, "cost": "120.00"}
|
||||
rec = VehicleService.create_service_record(data)
|
||||
self.vehicle.refresh_from_db()
|
||||
self.assertEqual(rec.next_service_due_at, 5200 + self.vehicle.service_interval_km)
|
||||
self.assertEqual(self.vehicle.current_mileage, 5200)
|
||||
|
||||
def test_vehicle_next_service_at_logic(self):
|
||||
# current=12000, interval=15000 -> blocks=(12000//15000)+1 = 1 -> 1*15000 = 15000
|
||||
v = Vehicle.objects.create(current_mileage=12000, service_interval_km=15000)
|
||||
assert v.next_service_at() == 15000
|
||||
|
||||
# current=16000, interval=15000 -> blocks=(16000//15000)+1 = 2 -> 2*15000 = 30000
|
||||
v.current_mileage = 16000
|
||||
assert v.next_service_at() == 30000
|
||||
|
||||
def test_work_order_distance_property(self):
|
||||
vehicle = Vehicle.objects.create(registration_number="ZG-004")
|
||||
# Nalog bez završne kilometraže
|
||||
wo = WorkOrder.objects.create(vehicle=vehicle, creator=self.user, start_mileage=1000)
|
||||
assert wo.distance is None
|
||||
|
||||
# Nalog sa završnom kilometražom
|
||||
wo.end_mileage = 1100
|
||||
assert wo.distance == 100
|
||||
Reference in New Issue
Block a user