57 lines
2.0 KiB
Dart
57 lines
2.0 KiB
Dart
import 'package:flutter/material.dart';
|
||
import 'package:flutter_test/flutter_test.dart';
|
||
import 'package:timezone/data/latest.dart' as tzdata;
|
||
import 'package:hepan_everyday/main.dart';
|
||
import 'package:hepan_everyday/app/app_controller.dart';
|
||
import 'package:hepan_everyday/app/hepan_app.dart';
|
||
import 'package:hepan_everyday/domain/app_snapshot.dart';
|
||
import 'package:hepan_everyday/domain/app_settings.dart';
|
||
import 'package:hepan_everyday/domain/semester.dart';
|
||
|
||
import '../support/fakes.dart';
|
||
import '../domain/schedule_engine_test.dart' show course;
|
||
|
||
void main() {
|
||
setUpAll(tzdata.initializeTimeZones);
|
||
testWidgets(
|
||
'actual startup connects both tabs and reminder tap opens saved course',
|
||
(tester) async {
|
||
final selection = ValueNotifier<String?>(null);
|
||
final controller = AppController(
|
||
MemoryStore(
|
||
AppSnapshot(
|
||
courses: [course(last: 2)],
|
||
settings: AppSettings(
|
||
semester: Semester(
|
||
startDate: DateTime(2026, 9, 9),
|
||
totalWeeks: 5,
|
||
),
|
||
),
|
||
),
|
||
),
|
||
FakeNotifications(),
|
||
FakeCalendar(),
|
||
() => DateTime.utc(2026, 9, 8),
|
||
);
|
||
await controller.initialize();
|
||
await tester.pumpWidget(
|
||
buildApplication(controller, notificationSelection: selection),
|
||
);
|
||
await tester.pumpAndSettle();
|
||
expect(find.bySemanticsLabel('课表'), findsOneWidget);
|
||
expect(find.bySemanticsLabel('我的'), findsOneWidget);
|
||
await tester.tap(find.bySemanticsLabel('我的'));
|
||
await tester.pumpAndSettle();
|
||
selection.value = 'math/2026-09-09';
|
||
await tester.pumpAndSettle();
|
||
expect(find.text('知道了'), findsOneWidget);
|
||
expect(find.textContaining('08:30–10:05'), findsOneWidget);
|
||
await tester.tap(find.text('知道了'));
|
||
await tester.pumpAndSettle();
|
||
expect(find.byType(HepanApp), findsOneWidget);
|
||
controller.dispose();
|
||
selection.dispose();
|
||
},
|
||
);
|
||
}
|