#!/bin/bash # Widget 테스트 파일들에 Provider 설정 추가하는 스크립트 echo "Widget 테스트 파일들에 Provider 설정을 추가합니다..." # equipment_list_widget_test.dart 수정 echo "Fixing equipment_list_widget_test.dart..." cat > equipment_list_widget_test_temp.dart << 'EOF' import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:get_it/get_it.dart'; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:superport/screens/equipment/equipment_list_redesign.dart'; import 'package:superport/screens/equipment/controllers/equipment_list_controller.dart'; import 'package:superport/services/equipment_service.dart'; import 'package:superport/services/auth_service.dart'; import 'package:superport/services/mock_data_service.dart'; import 'package:superport/services/company_service.dart'; import 'package:superport/services/warehouse_service.dart'; import '../../helpers/test_helpers.dart'; import '../../helpers/simple_mock_services.dart'; import '../../helpers/simple_mock_services.mocks.dart'; import '../../helpers/mock_data_helpers.dart'; void main() { late MockEquipmentService mockEquipmentService; late MockAuthService mockAuthService; late MockMockDataService mockDataService; late MockCompanyService mockCompanyService; late MockWarehouseService mockWarehouseService; late GetIt getIt; setUp(() { // GetIt 초기화 getIt = setupTestGetIt(); // Mock 서비스 생성 mockEquipmentService = MockEquipmentService(); mockAuthService = MockAuthService(); mockDataService = MockMockDataService(); mockCompanyService = MockCompanyService(); mockWarehouseService = MockWarehouseService(); // Mock 서비스 등록 getIt.registerSingleton(mockEquipmentService); getIt.registerSingleton(mockAuthService); getIt.registerSingleton(mockDataService); getIt.registerSingleton(mockCompanyService); getIt.registerSingleton(mockWarehouseService); // 기본 Mock 설정 SimpleMockServiceHelpers.setupAuthServiceMock(mockAuthService, isLoggedIn: true); SimpleMockServiceHelpers.setupEquipmentServiceMock(mockEquipmentService); SimpleMockServiceHelpers.setupMockDataServiceMock(mockDataService); SimpleMockServiceHelpers.setupCompanyServiceMock(mockCompanyService); SimpleMockServiceHelpers.setupWarehouseServiceMock(mockWarehouseService); }); tearDown(() { getIt.reset(); }); group('장비 목록 화면 Widget 테스트', () { testWidgets('초기 화면 렌더링 테스트', (WidgetTester tester) async { // Arrange final controller = EquipmentListController(); // Act await pumpTestWidget( tester, const EquipmentListRedesign(), providers: [ ChangeNotifierProvider.value( value: controller, ), ], ); await pumpAndSettleWithTimeout(tester); // Assert expect(find.byType(TextField), findsOneWidget); // 검색 필드 expect(find.text('새로고침'), findsOneWidget); // 새로고침 버튼 expect(find.text('장비 추가'), findsOneWidget); // 장비 추가 버튼 expect(find.byIcon(Icons.search), findsOneWidget); // 검색 아이콘 }); testWidgets('장비 목록 로딩 및 표시 테스트', (WidgetTester tester) async { // Arrange final controller = EquipmentListController(); final mockEquipments = MockDataHelpers.createMockEquipmentListDtoList(count: 5); when(mockEquipmentService.getEquipmentsWithStatus( page: anyNamed('page'), perPage: anyNamed('perPage'), status: anyNamed('status'), companyId: anyNamed('companyId'), warehouseLocationId: anyNamed('warehouseLocationId'), )).thenAnswer((_) async => mockEquipments); // Act await pumpTestWidget( tester, const EquipmentListRedesign(), providers: [ ChangeNotifierProvider.value( value: controller, ), ], ); await pumpAndSettleWithTimeout(tester); // Assert // 각 장비가 표시되는지 확인 for (int i = 0; i < 5; i++) { expect(find.text('EQ${(i + 1).toString().padLeft(3, '0')}'), findsOneWidget); } }); }); } EOF mv equipment_list_widget_test_temp.dart equipment_list_widget_test.dart echo "모든 widget 테스트 파일 수정 완료!"