import uuid from django.test import TestCase from unittest.mock import patch from datetime import datetime from django.contrib.auth import get_user_model from modules.crm.models import Client from modules.invoicing import tasks class TasksTests(TestCase): def setUp(self): # Kreiramo klijenta koji vraća PaperlessGateway; email jedinstven radi izbjegavanja duplikata self.client = Client.objects.create( name="Paperless Corp", email=f"paperless+{uuid.uuid4()}@example.test" ) User = get_user_model() # Kreiramo sistemskog korisnika koji već postoji (trebao bi se koristiti) self.system_user = User.objects.create_user( username="bot@erp.hr", email="bot@erp.hr", password="pass" ) @patch("modules.invoicing.tasks.PaperlessGateway.get_document_metadata") @patch("modules.invoicing.tasks.InvoiceService.create_full_invoice") def test_process_paperless_document_calls_service(self, mock_create_full_invoice, mock_get_metadata): # simuliramo odgovor infrastrukture mock_get_metadata.return_value = { "created": "2026-01-01T00:00:00Z", "correspondent": "Paperless Corp", "total_amount": "100.00" } # Pozovemo task sinkrono pomoću .apply (ispravno mapira argumente) tasks.process_paperless_document_task.apply(args=(123,)) # Očekujemo da je pozvan servis za izradu fakture mock_create_full_invoice.assert_called()