import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:hidalyx_drluiscastro/features/config/presentation/store/config_store.dart'; import 'package:hidalyx_drluiscastro/features/referrals/presentation/views/department_referral_modal_view.dart'; import 'package:hidalyx_drluiscastro/features/referrals/services/department_referral_pdf_service.dart'; void main() { group('DepartmentReferralModalView Tests', () { testWidgets('renders modal pre-populated with AlfaMedical department template', (tester) async { final configStore = ConfigStore(); configStore.nombreDoctor = 'Dr. Luis A. Castro Sosa'; configStore.especialidad = 'Cirujano Urólogo'; configStore.descripEspecialidad = 'Enfermedades Vías Urinarias'; configStore.descripGeneral = 'Santiago, RD'; await tester.pumpWidget( MaterialApp( home: Scaffold( body: DepartmentReferralModalView( patientName: 'CARLOS DIAZ', configStore: configStore, ), ), ), ); await tester.pumpAndSettle(); expect(find.text('Referir a Departamento'), findsOneWidget); expect(find.text('Dr. Luis A. Castro Sosa'), findsOneWidget); expect(find.text('CIRUJANO URÓLOGO'), findsOneWidget); expect(find.text('Crear / Imprimir Referimiento'), findsOneWidget); expect(find.text('ESC para salir'), findsOneWidget); // Verify default AlfaMedical department template content in the text field final textField = tester.widget(find.byType(TextField)); expect(textField.controller?.text, contains('Paciente: CARLOS DIAZ')); expect(textField.controller?.text, contains('Referido al departamento de anestesiologia')); expect(textField.controller?.text, contains('Plan: Realizar evaluación pre-anestesica')); expect(textField.controller?.text, contains('Para realizar:')); expect(textField.controller?.text, contains('Suite 408, 4ta planta.')); expect(textField.controller?.text, contains('Gracias.')); }); testWidgets('shows validation message when text is empty', (tester) async { final configStore = ConfigStore(); await tester.pumpWidget( MaterialApp( home: Scaffold( body: DepartmentReferralModalView( patientName: 'CARLOS DIAZ', configStore: configStore, ), ), ), ); await tester.pumpAndSettle(); // Clear text field await tester.enterText(find.byType(TextField), ''); await tester.pump(); final printBtn = find.text('Crear / Imprimir Referimiento'); await tester.tap(printBtn); await tester.pump(); expect(find.text('Debe redactar el contenido del referimiento.'), findsOneWidget); }); }); group('DepartmentReferralPdfService Tests', () { test('builds department referral pdf bytes with 8.5x5.5 inch format', () async { final bytes = await DepartmentReferralPdfService.buildDepartmentReferralPdf( doctorName: 'Dr. Luis A. Castro Sosa', specialty: 'Cirujano Urólogo', subspecialty: 'Enfermedades Vias Urinarias', generalContact: 'Santiago, RD. Tel: 809-583-2394', referralText: 'Paciente: CARLOS DIAZ\n\nReferido al departamento de anestesiologia\nPlan: Realizar evaluación pre-anestesica\n\nPara realizar: Cistoscopia\n\nSuite 408, 4ta planta.\nGracias.', ); expect(bytes, isNotEmpty); expect(bytes.sublist(0, 4), equals([0x25, 0x50, 0x44, 0x46])); }); }); }