결재 권한 테스트 및 인벤토리 위젯 안정화
This commit is contained in:
100
test/features/reporting/reporting_page_test.dart
Normal file
100
test/features/reporting/reporting_page_test.dart
Normal file
@@ -0,0 +1,100 @@
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get_it/get_it.dart';
|
||||
import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
|
||||
import 'package:superport_v2/core/common/models/paginated_result.dart';
|
||||
import 'package:superport_v2/core/config/environment.dart';
|
||||
import 'package:superport_v2/features/masters/warehouse/domain/entities/warehouse.dart';
|
||||
import 'package:superport_v2/features/masters/warehouse/domain/repositories/warehouse_repository.dart';
|
||||
import 'package:superport_v2/features/reporting/presentation/pages/reporting_page.dart';
|
||||
|
||||
import '../../helpers/test_app.dart';
|
||||
|
||||
void main() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
setUpAll(() async {
|
||||
await Environment.initialize();
|
||||
});
|
||||
|
||||
tearDown(() async {
|
||||
await GetIt.I.reset();
|
||||
});
|
||||
|
||||
testWidgets('보고서 화면은 창고 목록 재시도 흐름을 제공한다', (tester) async {
|
||||
final repo = _FlakyWarehouseRepository();
|
||||
GetIt.I.registerSingleton<WarehouseRepository>(repo);
|
||||
|
||||
final view = tester.view;
|
||||
view.physicalSize = const Size(1280, 800);
|
||||
view.devicePixelRatio = 1.0;
|
||||
addTearDown(() {
|
||||
view.resetPhysicalSize();
|
||||
view.resetDevicePixelRatio();
|
||||
});
|
||||
|
||||
await tester.pumpWidget(buildTestApp(const ReportingPage()));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(repo.attempts, 1);
|
||||
expect(find.text('창고 목록을 불러오지 못했습니다. 잠시 후 다시 시도하세요.'), findsOneWidget);
|
||||
|
||||
await tester.tap(find.widgetWithText(ShadButton, '재시도'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(repo.attempts, 2);
|
||||
expect(find.text('창고 목록을 불러오지 못했습니다. 잠시 후 다시 시도하세요.'), findsNothing);
|
||||
});
|
||||
}
|
||||
|
||||
class _FlakyWarehouseRepository implements WarehouseRepository {
|
||||
int attempts = 0;
|
||||
|
||||
@override
|
||||
Future<PaginatedResult<Warehouse>> list({
|
||||
int page = 1,
|
||||
int pageSize = 20,
|
||||
String? query,
|
||||
bool? isActive,
|
||||
}) async {
|
||||
attempts += 1;
|
||||
if (attempts == 1) {
|
||||
throw Exception('network down');
|
||||
}
|
||||
return PaginatedResult<Warehouse>(
|
||||
items: [
|
||||
Warehouse(
|
||||
id: 1,
|
||||
warehouseCode: 'WH-A',
|
||||
warehouseName: '창고 A',
|
||||
isActive: true,
|
||||
isDeleted: false,
|
||||
),
|
||||
],
|
||||
page: 1,
|
||||
pageSize: 20,
|
||||
total: 1,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Warehouse> create(WarehouseInput input) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> delete(int id) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Warehouse> restore(int id) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<Warehouse> update(int id, WarehouseInput input) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user