Files
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

75 lines
3.0 KiB
Python

import uuid
from django.test import TestCase
from django.core.exceptions import ValidationError
from django.db import IntegrityError
from modules.crm.models import Client
class ClientModelTests(TestCase):
def setUp(self):
# osnovni validni podaci koje ćemo koristiti u testovima
self.base_data = {
"name": "Test Client",
"tax_id": str(uuid.uuid4()), # jedinstveno
"email": f"client+{uuid.uuid4()}@example.test",
"address": "Ulica 1",
"city": "Grad",
"postal_code": "10000",
}
def test_create_client_success(self):
client = Client.objects.create(
client_type="legal",
**self.base_data
)
self.assertIsNotNone(client.pk)
self.assertEqual(client.name, "Test Client")
self.assertEqual(client.client_type, "legal")
# default ordering ili drugi atributi mogu se dodatno provjeriti
self.assertTrue(str(client).startswith("Test Client"))
self.assertIn(client.tax_id, str(client))
def test_default_client_type_is_legal(self):
# Ako eksplicitno ne pošaljemo client_type, default je 'legal'
data = dict(self.base_data)
data["tax_id"] = str(uuid.uuid4())
data["email"] = f"client+{uuid.uuid4()}@example.test"
client = Client.objects.create(**data)
self.assertEqual(client.client_type, "legal")
def test_str_representation_contains_name_and_taxid(self):
client = Client.objects.create(client_type="individual", **self.base_data)
expected = f"{client.name} ({client.tax_id})"
self.assertEqual(str(client), expected)
def test_unique_tax_id_constraint(self):
# Prva kreacija prođe
Client.objects.create(client_type="legal", **self.base_data)
# Pokušaj dupliciranja tax_id-a treba podići IntegrityError
dup = dict(self.base_data)
dup["email"] = f"client+{uuid.uuid4()}@example.test" # unique email drugi
with self.assertRaises(IntegrityError):
Client.objects.create(client_type="legal", **dup)
def test_unique_email_constraint(self):
Client.objects.create(client_type="legal", **self.base_data)
dup = dict(self.base_data)
dup["tax_id"] = str(uuid.uuid4()) # unique tax_id drugi
with self.assertRaises(IntegrityError):
Client.objects.create(client_type="legal", **dup)
def test_full_clean_validates_email_format(self):
data = dict(self.base_data)
data["email"] = "not-an-email"
client = Client(**data)
with self.assertRaises(ValidationError):
client.full_clean() # EmailField validation je pokrenuta
def test_full_clean_requires_required_fields(self):
# Uklonimo obavezno polje name i očekujemo ValidationError
data = dict(self.base_data)
data.pop("name")
client = Client(**data)
with self.assertRaises(ValidationError):
client.full_clean()