이벤트 개발완료

This commit is contained in:
2025-10-23 22:04:03 +09:00
parent ce1aee67d6
commit cd0e139b5e
48 changed files with 7855 additions and 3459 deletions
@@ -0,0 +1,96 @@
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);
});
});
}