fix(editor): Karte ohne Logo zeichnen, wenn ein Logo nicht lädt; erneute Wahl versucht es noch einmal
Schlussreview F1. Scheiterte das Laden der Bilder (Netz, Server), bricht draw() ab, solange logos.key nicht zur Auswahl passt: Vorschau und Miniaturen blieben leer, und ein erneuter Klick auf dieselbe Kachel änderte nichts, weil failedKey dem Schlüssel entsprach. - Nach einem echten Ladefehler lädt der Editor einmal die Marke allein (loadCardAssets mit logo: null) und zeichnet die Karte damit ohne Logo (`failed`); scheitert auch das, fehlt die Marke ebenfalls. LOGO_ERROR bleibt stehen, die Auswahl auch. Ein anderes Logo wird nie mit den Bildern der gescheiterten Auswahl gezeichnet (der Schlüssel entscheidet wie bisher). - Der Picker meldet jeden Klick, auch auf das schon gewählte Logo: ist es das Logo, dessen Laden scheiterte, hebt der Editor die Sperre (failedKey) auf und versucht es noch einmal. Ein geladenes Logo wird dabei nicht neu geladen, ein Fehlschlag wiederholt sich nicht im Kreis. - Tests: Karte ohne Logo nach dem Fehler (Vorschau und vier Miniaturen), Wiederholung per Klick (Erfolg und erneuter Fehlschlag, kein Loop), Marke lädt auch nicht, anderes Logo nach dem Fehler, Klick auf geladenes Logo lädt nichts neu; Picker meldet den Klick auf die gewählte Kachel. Zwei bestehende Tests angepasst: „nicht gezeichnet nach Fehler“ gilt nicht mehr, und die Zahl der loadCardAssets-Aufrufe zählt jetzt den zusätzlichen Lauf für die Marke nicht mehr mit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7e66cd0f0f
commit
202254c09e
3 files changed
+165
-9
No files matched your search
@@ -472,6 +472,15 @@ describe('Auswahl', () => {
|
||||
expect(fx.onSelect).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
|
||||
it('ein Klick auf die schon gewählte Kachel meldet onSelect noch einmal (der Editor versucht damit ein gescheitertes Laden des Logos erneut)', async () => {
|
||||
await mount();
|
||||
picker.select('b');
|
||||
tile('Logo B').click();
|
||||
tile('Logo B').click();
|
||||
expect(fx.onSelect).toHaveBeenCalledTimes(2);
|
||||
expect(fx.onSelect).toHaveBeenLastCalledWith('b');
|
||||
});
|
||||
|
||||
it('ein Klick auf das Herz wählt das Logo nicht', async () => {
|
||||
await mount();
|
||||
heart('Logo B').click();
|
||||
|
||||
Reference in new issue
Block a user