import 'package:flutter_test/flutter_test.dart'; import 'package:superport/services/warehouse_service.dart'; import 'package:superport/models/warehouse_location_model.dart'; import 'screens/base/base_screen_test.dart'; import 'framework/models/test_models.dart'; /// 창고 관리 화면 자동화 테스트 (수정된 버전) class WarehouseAutomatedTest extends BaseScreenTest { late WarehouseService warehouseService; WarehouseAutomatedTest({ required super.apiClient, required super.getIt, required super.testContext, required super.errorDiagnostics, required super.autoFixer, required super.dataGenerator, required super.reportCollector, }); @override ScreenMetadata getScreenMetadata() { return ScreenMetadata( screenName: 'WarehouseScreen', controllerType: WarehouseService, relatedEndpoints: [ ApiEndpoint( path: '/api/v1/warehouse-locations', method: 'GET', description: '창고 목록 조회', ), ApiEndpoint( path: '/api/v1/warehouse-locations', method: 'POST', description: '창고 생성', ), ], screenCapabilities: { 'warehouse_management': { 'create': true, 'read': true, 'update': true, 'delete': true, }, }, ); } @override Future initializeServices() async { warehouseService = getIt(); } @override dynamic getService() => warehouseService; @override String getResourceType() => 'warehouse'; @override Map getDefaultFilters() { return { 'isActive': true, }; } @override Future> detectCustomFeatures(ScreenMetadata metadata) async { return []; } // BaseScreenTest 추상 메서드 구현 @override Future performCreateOperation(TestData data) async { // 생성 로직 주석 처리 - 필요시 구현 throw UnimplementedError('창고 생성 메서드를 구현해주세요'); } @override Future performReadOperation(TestData data) async { return await warehouseService.getWarehouseLocations( page: 1, perPage: 20, ); } @override Future performUpdateOperation(dynamic resourceId, Map updateData) async { // 창고 업데이트 구현 throw UnimplementedError('창고 업데이트 메서드를 구현해주세요'); } @override Future performDeleteOperation(dynamic resourceId) async { // 창고 삭제 구현 throw UnimplementedError('창고 삭제 메서드를 구현해주세요'); } @override dynamic extractResourceId(dynamic resource) { if (resource is WarehouseLocation) { return resource.id; } return null; } }