- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - 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
129 lines
4.6 KiB
Bash
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 테스트 파일 수정 완료!" |