import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:social_app/features/calendar/reminders/ui/reminder_overlay.dart'; import 'package:social_app/features/calendar/reminders/reminder_queue_manager.dart'; import 'package:social_app/features/calendar/reminders/models/reminder_payload.dart'; void main() { group('ReminderOverlay', () { late ReminderQueueManager queueManager; setUp(() { SharedPreferences.setMockInitialValues({}); queueManager = ReminderQueueManager(); }); testWidgets('显示日程标题和当前时间', (tester) async { final payload = ReminderPayload( eventId: '1', title: 'Test Meeting', startAt: DateTime(2026, 3, 20, 10, 0), endAt: DateTime(2026, 3, 20, 11, 0), timezone: 'Asia/Shanghai', mode: ReminderPayloadMode.single, ); queueManager.enqueueFromClick(payload); await tester.pumpWidget( MaterialApp( home: Scaffold( body: ReminderOverlay( queueManager: queueManager, onComplete: () {}, onSnooze: (minutes) {}, onArchive: () {}, ), ), ), ); expect(find.text('Test Meeting'), findsOneWidget); }); testWidgets('点击完成按钮触发归档', (tester) async { bool archiveCalled = false; final payload = ReminderPayload( eventId: '1', title: 'Test Meeting', startAt: DateTime(2026, 3, 20, 10, 0), endAt: DateTime(2026, 3, 20, 11, 0), timezone: 'Asia/Shanghai', mode: ReminderPayloadMode.single, ); queueManager.enqueueFromClick(payload); await tester.pumpWidget( MaterialApp( home: Scaffold( body: ReminderOverlay( queueManager: queueManager, onComplete: () {}, onSnooze: (minutes) {}, onArchive: () => archiveCalled = true, ), ), ), ); await tester.tap(find.text('完成')); await tester.pump(); expect(archiveCalled, true); }); testWidgets('点击稍后提醒显示下拉选项', (tester) async { final payload = ReminderPayload( eventId: '1', title: 'Test Meeting', startAt: DateTime(2026, 3, 20, 10, 0), endAt: DateTime(2026, 3, 20, 11, 0), timezone: 'Asia/Shanghai', mode: ReminderPayloadMode.single, ); queueManager.enqueueFromClick(payload); await tester.pumpWidget( MaterialApp( home: Scaffold( body: ReminderOverlay( queueManager: queueManager, onComplete: () {}, onSnooze: (minutes) {}, onArchive: () {}, ), ), ), ); await tester.tap(find.text('稍后提醒')); await tester.pumpAndSettle(); expect(find.text('5 分钟'), findsOneWidget); expect(find.text('15 分钟'), findsOneWidget); }); }); }