63 lines
2.2 KiB
Dart
63 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:lanebow/screens/club/participant_form_screen.dart';
|
|
import 'package:lanebow/services/event_service.dart';
|
|
|
|
void main() {
|
|
group('ParticipantFormScreen - Guest Prefill BottomSheet', () {
|
|
Widget _buildApp() => MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider(create: (_) => EventService()),
|
|
],
|
|
child: const MaterialApp(
|
|
home: Scaffold(
|
|
body: ParticipantFormScreen(eventId: 'test_event'),
|
|
),
|
|
),
|
|
);
|
|
|
|
testWidgets('opens bottom sheet and applies filled values', (tester) async {
|
|
await tester.pumpWidget(_buildApp());
|
|
await tester.pumpAndSettle();
|
|
|
|
// 사전입력 버튼 노출
|
|
expect(find.text('게스트 사전입력'), findsOneWidget);
|
|
|
|
// 버튼 탭으로 BottomSheet 오픈
|
|
await tester.tap(find.text('게스트 사전입력'));
|
|
await tester.pumpAndSettle();
|
|
|
|
// 필드 입력
|
|
await tester.enterText(find.byType(TextField).at(0), '홍길동');
|
|
await tester.enterText(find.byType(TextField).at(1), 'hong@test.com');
|
|
await tester.enterText(find.byType(TextField).at(2), '01012345678');
|
|
|
|
// 적용
|
|
await tester.tap(find.text('적용'));
|
|
await tester.pumpAndSettle();
|
|
|
|
// 폼 필드에 값 반영 확인
|
|
expect(find.widgetWithText(TextFormField, '홍길동'), findsOneWidget);
|
|
expect(find.widgetWithText(TextFormField, 'hong@test.com'), findsOneWidget);
|
|
expect(find.widgetWithText(TextFormField, '01012345678'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('shows warning when name is empty', (tester) async {
|
|
await tester.pumpWidget(_buildApp());
|
|
await tester.pumpAndSettle();
|
|
|
|
await tester.tap(find.text('게스트 사전입력'));
|
|
await tester.pumpAndSettle();
|
|
|
|
// 이름 비우고 적용
|
|
await tester.enterText(find.byType(TextField).at(0), '');
|
|
await tester.tap(find.text('적용'));
|
|
await tester.pump();
|
|
|
|
expect(find.text('이름은 필수 입력 항목입니다'), findsOneWidget);
|
|
});
|
|
});
|
|
}
|