prvi kod za live uporabu
Some checks failed
ERP CI Pipeline / test (push) Has been cancelled

This commit is contained in:
mariomitte
2026-07-09 21:21:17 +02:00
parent 857bb65d52
commit 5d39e048ba
239 changed files with 25151 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
import uuid
from django.test import TestCase
from modules.fleet.serializers import CraneSerializer
class CraneSerialNumberTests(TestCase):
def _base_payload(self):
suffix = uuid.uuid4().hex[:6].upper()
return {
"registration_number": f"ZG-CRN-{suffix}",
"make": "Liebherr",
"model": "LTM",
"year": 2024,
"current_mileage": 12000,
"service_interval_km": 8000,
"is_company_vehicle": True,
"is_active": True,
}
def test_create_crane_with_serial_number_succeeds(self):
payload = {
**self._base_payload(),
"crane_serial_number": "123456",
}
serializer = CraneSerializer(data=payload)
self.assertTrue(serializer.is_valid(), serializer.errors)
crane = serializer.save()
self.assertEqual(crane.asset_type, "crane")
self.assertEqual(crane.crane_serial_number, "123456")
def test_create_crane_without_serial_number_fails(self):
payload = self._base_payload()
serializer = CraneSerializer(data=payload)
self.assertFalse(serializer.is_valid())
self.assertIn("crane_serial_number", serializer.errors)
def test_crane_serial_number_industry_standard_validation(self):
valid_payload = {
**self._base_payload(),
"registration_number": f"ZG-CRN-{uuid.uuid4().hex[:6].upper()}",
"crane_serial_number": "000123",
}
valid_serializer = CraneSerializer(data=valid_payload)
self.assertTrue(valid_serializer.is_valid(), valid_serializer.errors)
invalid_serials = [
"12345", # prekratko
"1234567", # predugo
"12A456", # slova nisu dozvoljena
"12 456", # razmaci nisu dozvoljeni
"12-456", # specijalni znakovi nisu dozvoljeni
"", # unicode znamenke nisu dozvoljene (samo ASCII 0-9)
]
for value in invalid_serials:
with self.subTest(serial=value):
payload = {
**self._base_payload(),
"registration_number": f"ZG-CRN-{uuid.uuid4().hex[:6].upper()}",
"crane_serial_number": value,
}
serializer = CraneSerializer(data=payload)
self.assertFalse(serializer.is_valid())
self.assertIn("crane_serial_number", serializer.errors)