Files
superport/test/widget/screens/fix_widget_tests.sh
JiWoong Sul 198aac6525
Some checks failed
Flutter Test & Quality Check / Test on macos-latest (push) Has been cancelled
Flutter Test & Quality Check / Test on ubuntu-latest (push) Has been cancelled
Flutter Test & Quality Check / Build APK (push) Has been cancelled
test: 통합 테스트 오류 및 경고 수정
- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정
- TestDataGenerator 제거하고 직접 객체 생성으로 변경
- 모델 필드명 및 타입 불일치 수정
- 불필요한 Either 패턴 사용 제거
- null safety 관련 이슈 해결

수정된 파일:
- test/integration/screens/company_integration_test.dart
- test/integration/screens/equipment_integration_test.dart
- test/integration/screens/user_integration_test.dart
- test/integration/screens/login_integration_test.dart
2025-08-05 20:24:05 +09:00

129 lines
4.6 KiB
Bash

#!/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<EquipmentService>(mockEquipmentService);
getIt.registerSingleton<AuthService>(mockAuthService);
getIt.registerSingleton<MockDataService>(mockDataService);
getIt.registerSingleton<CompanyService>(mockCompanyService);
getIt.registerSingleton<WarehouseService>(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<EquipmentListController>.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<EquipmentListController>.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 테스트 파일 수정 완료!"