42 lines
1.4 KiB
Dart
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);
|
|
});
|
|
}
|