v2.53.1 — MED-3: Tests für Tombstone-Heuristik, SyncBericht, songAusServerMap + delete-deleted_at
## MED-3 (Review-Fix) - test/sync_service_test.dart NEU (14 Tests): tombstoneAnwenden-Matrix (letzterSync null → true, deletedAt null → true, älter → false, neuer → true, Gleichstand → false, ungültiger Timestamp → true), SyncBericht (hatAenderungen, zusammenfassung kombiniert/leer, details), songAusServerMap (cloud_id/Titel/Künstler/Dauer/Größe/istKorrupt-Mapping, Defaults bei fehlenden Feldern, String-Robustheit) — deckt die MED-1-Heuristik + den MED-2-DB-Insert ab (123→140 Tests) - test/cloud_service_test.dart +3: delete mit deletedAt sendet deleted_at im Body, delete ohne deletedAt sendet KEIN deleted_at-Feld, delete Netzwerkfehler → false
This commit is contained in:
@@ -304,6 +304,44 @@ void main() {
|
||||
expect(await cloud401.delete('s1'), isFalse);
|
||||
});
|
||||
|
||||
test('delete mit deletedAt sendet deleted_at im Body (Tombstone, Sprint E)',
|
||||
() async {
|
||||
late Map<String, dynamic> gesendeterBody;
|
||||
final cloud = CloudService(
|
||||
client: MockClient((req) async {
|
||||
gesendeterBody = jsonDecode(req.body) as Map<String, dynamic>;
|
||||
return http.Response('{}', 200);
|
||||
}),
|
||||
);
|
||||
final ok = await cloud.delete('s1', deletedAt: '2026-08-05T10:00:00');
|
||||
expect(ok, isTrue);
|
||||
expect(gesendeterBody['song_id'], 's1');
|
||||
expect(gesendeterBody['deleted_at'], '2026-08-05T10:00:00');
|
||||
});
|
||||
|
||||
test('delete ohne deletedAt sendet KEIN deleted_at-Feld', () async {
|
||||
late Map<String, dynamic> gesendeterBody;
|
||||
final cloud = CloudService(
|
||||
client: MockClient((req) async {
|
||||
gesendeterBody = jsonDecode(req.body) as Map<String, dynamic>;
|
||||
return http.Response('{}', 200);
|
||||
}),
|
||||
);
|
||||
final ok = await cloud.delete('s1');
|
||||
expect(ok, isTrue);
|
||||
expect(gesendeterBody['song_id'], 's1');
|
||||
expect(gesendeterBody.containsKey('deleted_at'), isFalse);
|
||||
});
|
||||
|
||||
test('delete Netzwerkfehler → false (kein Crash)', () async {
|
||||
final cloud = CloudService(
|
||||
client: MockClient(
|
||||
(req) async => throw http.ClientException('offline')),
|
||||
);
|
||||
expect(await cloud.delete('s1', deletedAt: '2026-08-05T10:00:00'),
|
||||
isFalse);
|
||||
});
|
||||
|
||||
test('globalList 200 → Songs, 401 → []', () async {
|
||||
final cloudOk = CloudService(
|
||||
client: MockClient((req) async =>
|
||||
|
||||
Reference in New Issue
Block a user