40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
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() |