import uuid from django.test import TestCase, RequestFactory from unittest.mock import patch from modules.crm.serializers import ClientSerializer from modules.crm.models import Client class ClientSerializerTests(TestCase): def setUp(self): self.factory = RequestFactory() self.base_data = { "name": "Ser Client", "client_type": "legal", "tax_id": str(uuid.uuid4()), "email": f"client+{uuid.uuid4()}@example.test", "address": "Street 1", "city": "City", "postal_code": "00000", } @patch("modules.crm.serializers.ClientService.create_client") def test_create_calls_service(self, mock_create): # Prepare mock return value mock_instance = Client(**self.base_data) mock_instance.pk = 1 mock_create.return_value = mock_instance serializer = ClientSerializer(data=self.base_data, context={"request": self.factory.post("/")}) self.assertTrue(serializer.is_valid(), serializer.errors) result = serializer.save() mock_create.assert_called_once() self.assertEqual(result.pk, 1) @patch("modules.crm.serializers.ClientService.update_client") def test_update_calls_service(self, mock_update): client = Client.objects.create(**self.base_data) mock_update.return_value = client serializer = ClientSerializer(instance=client, data={"city": "UpdatedCity"}, partial=True, context={"request": self.factory.put("/")}) self.assertTrue(serializer.is_valid(), serializer.errors) result = serializer.save() mock_update.assert_called_once() self.assertEqual(result, client)