feat: compose Android app and verify native calendar and reminders

This commit is contained in:
Codex
2026-10-13 09:14:47 +08:00
parent 2c4256b880
commit 5ceab20b67
37 changed files with 695 additions and 229 deletions
+26
View File
@@ -9,6 +9,9 @@ import 'package:hepan_everyday/data/json_schedule_import.dart';
import '../support/fakes.dart';
import '../domain/schedule_engine_test.dart' show course;
import '../services/calendar_service_test.dart' show CalendarProvider;
import 'package:hepan_everyday/services/android_calendar_service.dart';
void main() {
setUpAll(tzdata.initializeTimeZones);
@@ -35,6 +38,29 @@ void main() {
);
});
tearDown(() => controller.dispose());
test('turning off after interrupted first sync cleans events even without saved IDs', () async {
store.value = store.value!.copyWith(
courses: [
course(id: 'a'),
course(id: 'b'),
],
);
final provider = CalendarProvider()..failAfterFirst = true;
final interrupted = AppController(
store,
notifications,
AndroidCalendarService(provider),
controller.clock,
);
await interrupted.initialize();
await interrupted.enableCalendarFromUserAction('local');
expect(interrupted.calendarSyncError, isNotNull);
expect(provider.records, hasLength(1));
provider.failAfterFirst = false;
await interrupted.disableCalendar(deleteEvents: true);
expect(provider.records, isEmpty);
interrupted.dispose();
});
test(
'failed calendar cleanup is retried after reopening while sync is off',
() async {