Files
004.erp.generic/backend/modules/fleet/tests/test_crane_serial_number.py
mariomitte 5d39e048ba
Some checks failed
ERP CI Pipeline / test (push) Has been cancelled
prvi kod za live uporabu
2026-07-09 21:21:17 +02:00

68 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)