import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:lanebow/models/event_model.dart'; import 'package:lanebow/screens/club/tabs/basic_info_tab.dart'; void main() { Widget _wrap(Widget child) => MaterialApp(home: Scaffold(body: child)); group('BasicInfoTab 표시/숨김 테스트', () { testWidgets('모든 항목이 있을 때 모두 표시된다', (tester) async { final event = Event( id: 'e1', clubId: 'c1', title: '타이틀', description: '설명 텍스트', startDate: DateTime(2025, 1, 1, 10, 0), endDate: DateTime(2025, 1, 1, 12, 0), location: '강남 볼링장', type: 'regular', status: 'active', maxParticipants: 20, gameCount: 3, participantFee: 15000, registrationDeadline: DateTime(2024, 12, 31, 23, 0), publicHash: 'hash123', accessPassword: 'abcd', isActive: true, ); await tester.pumpWidget(_wrap(BasicInfoTab( event: event, participantsCount: 5, onShareEvent: () {}, onSetEventReminders: () {}, ))); await tester.pumpAndSettle(); // 설명 섹션 expect(find.text('설명'), findsOneWidget); expect(find.text('설명 텍스트'), findsOneWidget); // 이벤트 정보 expect(find.textContaining('시작:'), findsOneWidget); expect(find.textContaining('종료:'), findsOneWidget); expect(find.textContaining('장소: 강남 볼링장'), findsOneWidget); expect(find.textContaining('최대 참가자: 20'), findsOneWidget); expect(find.textContaining('게임 수: 3'), findsOneWidget); expect(find.textContaining('참가비:'), findsOneWidget); expect(find.textContaining('신청마감:'), findsOneWidget); // 공개 접근 expect(find.textContaining('http'), findsWidgets); expect(find.textContaining('접근 비밀번호:'), findsOneWidget); // 참가자 정보 expect(find.text('참가자 정보'), findsOneWidget); expect(find.textContaining('현재 참가자: 5'), findsOneWidget); }); testWidgets('입력되지 않은 항목은 숨겨진다', (tester) async { final event = Event( id: 'e1', clubId: 'c1', title: '타이틀', startDate: DateTime(2025, 1, 1, 10, 0), // 나머지 선택 항목 미설정 isActive: true, ); await tester.pumpWidget(_wrap(BasicInfoTab( event: event, participantsCount: 0, onShareEvent: () {}, onSetEventReminders: () {}, ))); await tester.pumpAndSettle(); // 설명 섹션 없음 expect(find.text('설명'), findsNothing); // 이벤트 정보: 시작만 존재, 나머지 미표시 expect(find.textContaining('시작:'), findsOneWidget); expect(find.textContaining('종료:'), findsNothing); expect(find.textContaining('장소:'), findsNothing); expect(find.textContaining('최대 참가자:'), findsNothing); expect(find.textContaining('게임 수:'), findsNothing); expect(find.textContaining('참가비:'), findsNothing); expect(find.textContaining('신청마감:'), findsNothing); // 공개 접근: publicHash/비밀번호 미설정 → 표시 안 됨 expect(find.textContaining('http'), findsNothing); expect(find.textContaining('접근 비밀번호:'), findsNothing); }); }); }