import uuid from django.test import TestCase from django.contrib.auth import get_user_model from modules.fleet.models import Vehicle, WorkOrder, VehicleServiceRecord class FleetModelTests(TestCase): def setUp(self): User = get_user_model() self.user = User.objects.create_user(username="tech", email=f"tech+{uuid.uuid4()}@example.test", password="pass") self.vehicle = Vehicle.objects.create( registration_number=f"ZG-{uuid.uuid4().hex[:6].upper()}", make="Toyota", model="Yaris", current_mileage=12000, service_interval_km=15000, assigned_servicer=self.user ) def test_next_service_at(self): self.assertEqual(self.vehicle.next_service_at(), 15000) def test_work_order_updates_vehicle_mileage(self): wo = WorkOrder.objects.create(vehicle=self.vehicle, creator=self.user, start_mileage=12000, end_mileage=12500) self.vehicle.refresh_from_db() self.assertEqual(self.vehicle.current_mileage, 12500) self.assertEqual(wo.distance, 500) def test_service_record_sets_next_service_due_and_updates_vehicle(self): rec = VehicleServiceRecord.objects.create(vehicle=self.vehicle, performed_by=self.user, description="Oil change", mileage=13000, parts="oil;filter", cost="50.00") self.vehicle.refresh_from_db() self.assertEqual(rec.next_service_due_at, 13000 + self.vehicle.service_interval_km) self.assertEqual(self.vehicle.current_mileage, 13000)