from decimal import Decimal from django.contrib.auth import get_user_model from django.test import TestCase from apps.accounts.models import Customer from apps.orders.models import ProcessingOrder from apps.reports.services import ReportService from apps.workflows.models import Workflow, WorkflowVersion User = get_user_model() class ReportServiceTests(TestCase): def setUp(self): self.user = User.objects.create_user(username="c", password="***") self.customer = Customer.objects.create(user=self.user) wf = Workflow.objects.create(name="W", slug="w-report") version = WorkflowVersion.objects.create(workflow=wf, version=1) self.order = ProcessingOrder.objects.create( customer=self.customer, workflow_version=version, net_weight_kg=Decimal("920"), price_snapshot={"total": "4600000.00", "currency": "IRR"}, ) def test_generate_builds_data(self): report = ReportService().generate(self.order) self.assertEqual(report.data["order_number"], self.order.order_number) self.assertEqual(report.data["net_weight_kg"], "920") def test_render_pdf(self): report = ReportService().generate(self.order) pdf = ReportService().render_pdf(report) self.assertGreater(len(pdf), 1000) self.assertTrue(pdf.startswith(b"%PDF"))