fix(shell): geschlossenes Spenden-Banner kommt beim Sprachwechsel auch ohne localStorage nicht zurück
Das Banner merkte sich „geschlossen“ nur in localStorage. Bei gesperrtem Speicher (privates Fenster, gesperrte Website-Daten) baute der Neuaufbau des Rahmens beim Sprachwechsel (main.ts) es wieder auf. - donate-banner.ts: zusätzlich ein Merker im Speicher des Moduls (closedThisSession); er gilt neben localStorage. - Tests: donate-banner.test.ts lädt je Test eine frische Modulkopie (der Merker lebt im Modul); neue Fälle: gesperrter Speicher, erneutes Einhängen nach dem Schließen (bleibt weg) und ohne Schließen (kommt wieder); main.test.ts: Sprachwechsel nach dem Schließen bei gesperrtem Speicher. Die beiden schon vorhandenen Fälle zum gesperrten Speicher sperren jetzt wirklich (vi.stubGlobal): vi.spyOn(Storage.prototype, …) greift in happy-dom nicht, die Fälle waren leer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
af05e5f1f1
commit
0bcdfe258d
3 files changed
+74
-11
No files matched your search
@@ -133,6 +133,21 @@ describe('Sprachwechsel', () => {
|
||||
expect(storeAfter.get().cardName).toBe('Mein Entwurf');
|
||||
});
|
||||
|
||||
it('ein geschlossenes Spenden-Banner kommt beim Sprachwechsel nicht zurück, auch wenn der Speicher gesperrt ist', async () => {
|
||||
await start('/');
|
||||
const denied = () => {
|
||||
throw new DOMException('blockiert', 'SecurityError');
|
||||
};
|
||||
vi.stubGlobal('localStorage', { getItem: denied, setItem: denied });
|
||||
document.querySelector<HTMLButtonElement>('.donate-banner-close')!.click();
|
||||
expect(document.querySelector('.donate-banner')).toBeNull();
|
||||
|
||||
langButton().click();
|
||||
|
||||
expect(document.documentElement.lang).toBe('en');
|
||||
expect(document.querySelector('.donate-banner')).toBeNull();
|
||||
});
|
||||
|
||||
it('das Konto-Menü wird neu gebaut und zeigt sich sofort, wenn der Anmeldestatus schon bekannt ist', async () => {
|
||||
await start('/');
|
||||
await vi.waitFor(() => expect(signIn()).toBeDefined());
|
||||
|
||||
Reference in new issue
Block a user