fix(logos): 404 „logoGone“ beim Löschen gilt als Erfolg
Schlussreview F5. Geht die Antwort einer Löschanfrage verloren und der Nutzer klickt noch einmal auf „Löschen“, antwortet der Dienst mit 404 `logoGone` (das Logo ist ja schon weg). Die Infozeile zeigte dann „Dieses Logo ist nicht (mehr) verfügbar.“ als Fehler, die Kachel blieb stehen. - Dieser Fehler (ApiError mit Status 404 und Schlüssel `logoGone`) gilt wie ein gelungenes Löschen: forgetLogo, die Kachel verschwindet, eine Auswahl wird aufgehoben (onSelect(null)), kein Fehlertext – wie bei „Zurückziehen“ einer schon zurückgezogenen Karte. - Jeder andere Fehler bleibt einer, auch ein 404 mit anderem oder ohne Schlüssel (etwa ein Dienst, der die Anfrage nicht kennt). - Tests in logo-info.test.ts (Hochlader, Admin, Seite verlassen, Fehler, die Fehler bleiben) und im Picker mit Raster und Auswahl. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4aedb1d322
commit
df1cf29d42
3 files changed
+80
-1
No files matched your search
@@ -1491,6 +1491,23 @@ describe('Löschen (mit Raster und Auswahl)', () => {
|
||||
expect(revoked).toContain(created[1]); // das Bild der Kachel ist freigegeben
|
||||
});
|
||||
|
||||
it('404 „logoGone“ (es gibt das Logo schon nicht mehr): gilt als gelöscht – Kachel weg, forgetLogo, Auswahl aufgehoben, kein Fehlertext', async () => {
|
||||
fx.deleteLogo.mockRejectedValue(new ApiError(404, 'Dieses Logo ist nicht (mehr) verfügbar.', true, 'logoGone'));
|
||||
await mount();
|
||||
picker.select('b');
|
||||
infoButton('Löschen').click();
|
||||
await flush();
|
||||
expect(fx.deleteLogo).toHaveBeenCalledExactlyOnceWith('b');
|
||||
expect(mocks.forgetLogo).toHaveBeenCalledExactlyOnceWith('b');
|
||||
expect(names()).toEqual(['Kein Logo', 'Logo A', 'Logo C']);
|
||||
expect(fx.onSelect).toHaveBeenCalledExactlyOnceWith(null);
|
||||
expect(picker.selected()).toBeNull();
|
||||
expect(infoMessage()).toBe('');
|
||||
expect(alertText()).toBe('');
|
||||
expect(infoLine()).toBe('');
|
||||
expect(revoked).toContain(created[1]); // das Bild der Kachel ist freigegeben
|
||||
});
|
||||
|
||||
it('der Editor übernimmt onSelect(null) mit select(null): „Kein Logo“ ist gewählt, nichts bleibt hängen', async () => {
|
||||
await mount();
|
||||
picker.select('b');
|
||||
|
||||
Reference in new issue
Block a user