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

40 lines
1.6 KiB
Python

from django.test import TestCase
from django.contrib.auth import get_user_model
from datetime import date
from decimal import Decimal
from modules.crm.models import Client
from modules.invoicing.models import Invoice, InvoiceItem
from modules.invoicing.services import InvoiceService
class InvoiceServiceTests(TestCase):
def setUp(self):
User = get_user_model()
self.creator = User.objects.create_user(username="creator", email="c@example.com", password="pass")
self.client = Client.objects.create(name="Test Client")
def test_create_full_invoice_creates_invoice_and_items(self):
items = [
{"description": "Item A", "quantity": Decimal("2.00"), "unit_price": Decimal("10.00")},
{"description": "Item B", "quantity": Decimal("1.00"), "unit_price": Decimal("5.50")},
]
validated_data = {
"client": self.client,
"due_date": date.today(),
"items": items,
}
invoice = InvoiceService.create_full_invoice(user=self.creator, **validated_data)
# Basic assertions
self.assertIsInstance(invoice, Invoice)
self.assertEqual(invoice.creator, self.creator)
self.assertEqual(invoice.client, self.client)
self.assertEqual(invoice.items.count(), 2)
# Total should be 2*10 + 1*5.5 = 25.5
self.assertEqual(invoice.amount, Decimal("25.50"))
item_descriptions = [i.description for i in invoice.items.all()]
self.assertIn("Item A", item_descriptions)
self.assertIn("Item B", item_descriptions)