This commit is contained in:
46
backend/modules/invoicing/tests/test_views.py
Normal file
46
backend/modules/invoicing/tests/test_views.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from django.test import TestCase, RequestFactory
|
||||
from django.contrib.auth import get_user_model
|
||||
from unittest.mock import patch
|
||||
|
||||
from modules.invoicing.views import InvoiceTransactionEntryViewSet
|
||||
from modules.invoicing.serializers import InvoiceTransactionSerializer
|
||||
from modules.invoicing.models import InvoiceTransaction
|
||||
from modules.invoicing.models import Invoice
|
||||
from modules.crm.models import Client
|
||||
from datetime import date
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
class ViewsTests(TestCase):
|
||||
def setUp(self):
|
||||
User = get_user_model()
|
||||
self.user = User.objects.create_user(username="u1", email="u1@example.com", password="pass")
|
||||
self.client = Client.objects.create(name="Client Views")
|
||||
self.invoice = Invoice.objects.create(
|
||||
invoice_number="INV-TEST-0001",
|
||||
creator=self.user,
|
||||
client=self.client,
|
||||
amount=Decimal("10.00"),
|
||||
due_date=date.today()
|
||||
)
|
||||
self.factory = RequestFactory()
|
||||
self.viewset = InvoiceTransactionEntryViewSet()
|
||||
|
||||
@patch("modules.invoicing.services.InvoiceService.create_invoice_entry")
|
||||
def test_perform_create_calls_service(self, mock_create_invoice_entry):
|
||||
# simuliramo serializer.validated_data i poziv perform_create
|
||||
serializer = InvoiceTransactionSerializer(data={
|
||||
"invoice": self.invoice.id,
|
||||
"invoice_number": self.invoice.invoice_number,
|
||||
"amount": "5.00",
|
||||
"is_active": True
|
||||
}, context={"request": self.factory.get("/")})
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
||||
# Poziv perform_create koji bi trebao delegirati na servis
|
||||
self.viewset.request = self.factory.post("/")
|
||||
self.viewset.request.user = self.user
|
||||
|
||||
# Ako kod poziva InvoiceService.create_invoice_entry, mock se aktivira.
|
||||
self.viewset.perform_create(serializer)
|
||||
mock_create_invoice_entry.assert_called()
|
||||
Reference in New Issue
Block a user