fix(account): Konto-Menü zeichnet bei unverändertem Namen nicht neu (Dropdown und Fokus bleiben)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
04404ffdae
commit
f46a69df68
2 files changed
+60
-1
No files matched your search
@@ -262,6 +262,57 @@ describe('Konto-Menü: Benutzername', () => {
|
||||
expect(buttonByText('Benutzername ändern')).toBeDefined();
|
||||
});
|
||||
|
||||
it('meldet onUsernameChange denselben Namen noch einmal (Lesen des eigenen Profils nach dem Start), bleibt das Menü unangetastet: offen und mit dem Fokus', () => {
|
||||
signedIn();
|
||||
mocks.name = 'Kenso';
|
||||
menu.ready();
|
||||
avatar()!.click();
|
||||
const before = { avatar: avatar(), panel: panel(), head: head() };
|
||||
const signOut = buttonByText('Abmelden')!;
|
||||
signOut.focus();
|
||||
setName('u1', 'Kenso');
|
||||
expect(avatar()).toBe(before.avatar); // dieselben Elemente, nichts wurde neu gebaut
|
||||
expect(panel()).toBe(before.panel);
|
||||
expect(head()).toBe(before.head);
|
||||
expect(panel()?.hidden).toBe(false);
|
||||
expect(avatar()?.getAttribute('aria-expanded')).toBe('true');
|
||||
expect(document.activeElement).toBe(signOut);
|
||||
expect(nameLine()?.textContent).toBe('@Kenso');
|
||||
});
|
||||
|
||||
it('ein anderer Name oder nur eine andere Schreibweise zeichnet dagegen neu', () => {
|
||||
signedIn();
|
||||
mocks.name = 'kenso';
|
||||
menu.ready();
|
||||
const before = avatar();
|
||||
setName('u1', 'Kenso'); // „kenso“ → „Kenso“ ist erlaubt (Spec § 4) und soll zu sehen sein
|
||||
expect(avatar()).not.toBe(before);
|
||||
expect(nameLine()?.textContent).toBe('@Kenso');
|
||||
const second = avatar();
|
||||
setName('u1', 'Mia');
|
||||
expect(avatar()).not.toBe(second);
|
||||
expect(nameLine()?.textContent).toBe('@Mia');
|
||||
});
|
||||
|
||||
it('die Namensmeldung eines anderen Kontos ändert nichts am Menü des angemeldeten', () => {
|
||||
signedIn();
|
||||
mocks.name = 'Kenso'; // der Name des angemeldeten Kontos bleibt
|
||||
menu.ready();
|
||||
avatar()!.click();
|
||||
const before = panel();
|
||||
for (const fn of [...mocks.nameListeners]) fn('u2', 'Mia'); // das Konto u2 hat sich umbenannt (etwa in einem eben beendeten Aufruf)
|
||||
expect(panel()).toBe(before);
|
||||
expect(panel()?.hidden).toBe(false);
|
||||
expect(nameLine()?.textContent).toBe('@Kenso');
|
||||
});
|
||||
|
||||
it('abgemeldet bleibt der Anmelden-Knopf stehen, auch wenn ein Name gemeldet wird (das Konto, das speicherte, ist nicht mehr angemeldet)', () => {
|
||||
menu.ready();
|
||||
const signIn = buttonByText('Anmelden');
|
||||
for (const fn of [...mocks.nameListeners]) fn('u2', 'Mia');
|
||||
expect(buttonByText('Anmelden')).toBe(signIn);
|
||||
});
|
||||
|
||||
it('nach dem Abmelden ist das Menü unabhängig vom Namen wieder „Anmelden“', () => {
|
||||
signedIn();
|
||||
mocks.name = 'Kenso';
|
||||
|
||||
Reference in new issue
Block a user