Files
Client/test/demo/demo_parent_letters_test.dart
T

42 lines
1.4 KiB
Dart

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<String, dynamic>,
).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);
});
}