fix: restore archive downloads and task report context
Restore the monthly fleet archive task and routes so generated ZIP downloads work again. Also populate service report DOCX headers from the selected task/work-order context and cover the direct and archived export flows with regression tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -60,7 +60,12 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
self.vehicle = Vehicle.objects.create(
|
||||
asset_type='crane',
|
||||
registration_number='WO-IMG-001',
|
||||
make='Liebherr',
|
||||
model='LTM 1090',
|
||||
crane_serial_number='123456',
|
||||
superstructure_working_hours=111,
|
||||
chassis_working_hours=222,
|
||||
current_mileage=33344,
|
||||
)
|
||||
self.work_order = WorkOrder.objects.create(
|
||||
vehicle=self.vehicle,
|
||||
@@ -301,6 +306,23 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
self.assertIn('24.12.2033', document_xml)
|
||||
self.assertEqual(document_xml.count('w:type="page"'), 1)
|
||||
|
||||
def test_task_specific_service_records_docx_uses_dynamic_docx_header_values(self):
|
||||
response = self.client.get(
|
||||
f"/api/fleet/work-orders/{self.work_order.pk}/service-records-docx/?task_id={self.task.pk}"
|
||||
)
|
||||
self.assertEqual(response.status_code, 200, response.content)
|
||||
|
||||
archive = zipfile.ZipFile(BytesIO(response.content))
|
||||
header_xml = archive.read('word/header1.xml').decode('utf-8')
|
||||
self.assertIn('Liebherr LTM 1090', header_xml)
|
||||
self.assertIn('123456', header_xml)
|
||||
self.assertIn('111', header_xml)
|
||||
self.assertIn('222', header_xml)
|
||||
self.assertIn('33344', header_xml)
|
||||
self.assertIn('MT150726', header_xml)
|
||||
self.assertNotIn('MT250226', header_xml)
|
||||
self.assertNotIn('LTM-1350', header_xml)
|
||||
|
||||
def test_monthly_service_tasks_archive_returns_zip_with_task_docx(self):
|
||||
response = self.client.get('/api/fleet/reports/monthly-service-tasks-archive/?year=2033&month=12')
|
||||
self.assertEqual(response.status_code, 200, response.content)
|
||||
@@ -310,6 +332,26 @@ class WorkOrderImagesEndpointTests(TestCase):
|
||||
names = archive.namelist()
|
||||
self.assertIn('MT150726.SN-Test_servisni_zadatak.docx', names)
|
||||
|
||||
def test_monthly_service_tasks_archive_docx_uses_dynamic_header_values(self):
|
||||
response = self.client.get('/api/fleet/reports/monthly-service-tasks-archive/?year=2033&month=12')
|
||||
self.assertEqual(response.status_code, 200, response.content)
|
||||
|
||||
archive = zipfile.ZipFile(BytesIO(response.content))
|
||||
docx_name = 'MT150726.SN-Test_servisni_zadatak.docx'
|
||||
self.assertIn(docx_name, archive.namelist())
|
||||
|
||||
docx_bytes = archive.read(docx_name)
|
||||
docx_archive = zipfile.ZipFile(BytesIO(docx_bytes))
|
||||
header_xml = docx_archive.read('word/header1.xml').decode('utf-8', errors='ignore')
|
||||
self.assertIn('Liebherr LTM 1090', header_xml)
|
||||
self.assertIn('123456', header_xml)
|
||||
self.assertIn('111', header_xml)
|
||||
self.assertIn('222', header_xml)
|
||||
self.assertIn('33344', header_xml)
|
||||
self.assertIn('MT150726', header_xml)
|
||||
self.assertNotIn('MT250226', header_xml)
|
||||
self.assertNotIn('LTM-1350', header_xml)
|
||||
|
||||
def test_monthly_work_orders_archive_contains_work_orders_and_invoices_folder(self):
|
||||
WorkOrderInvoice.objects.create(
|
||||
work_order=self.work_order,
|
||||
|
||||
Reference in New Issue
Block a user