import 'dart:convert'; import 'package:flutter_test/flutter_test.dart'; import 'package:marianum_mobile/api/demo/data/demo_parent_letters.dart'; import 'package:marianum_mobile/api/marianumconnect/queries/parent_letters/parent_letter_models.dart'; void main() { test('every demo inbox letter resolves to a consistent detail', () { final inbox = DemoParentLetters.list(); expect(inbox.items, isNotEmpty); expect( inbox.unreadCount, inbox.items.where((letter) => !letter.read).length, ); for (final letter in inbox.items) { final detail = DemoParentLetters.detail(letter.id); expect(detail.summary.id, letter.id); expect(detail.summary.status, letter.status); expect( detail.content.children.map((child) => child.childId), detail.content.request == null ? isEmpty : letter.childIds, ); // The inbox is hydrated, so the fixtures must survive storage. expect( ParentLetterDetail.fromJson( jsonDecode(jsonEncode(detail.toJson())) as Map, ).content, detail.content, ); } }); test('a letter read in the session stays read', () { final unread = DemoParentLetters.list().items.firstWhere((l) => !l.read); DemoParentLetters.markRead(unread.id); final after = DemoParentLetters.list().items.firstWhere( (l) => l.id == unread.id, ); expect(after.read, isTrue); }); }