feat(community): „von @name“ statt Anzeigename, Benutzername vor dem Hochladen und Veröffentlichen
Logo-Kacheln, Logo-Infozeile und die Detailseite einer Community-Karte zeigen den Benutzernamen des Kontos (Hilfsfunktion byline: Profil, sonst alter Anzeigename, sonst „Anonym“). Die Namen kommen je geladener Seite in einer Abfrage nach, ein Fehler dabei bleibt ohne Fehlertext, ein eigenes Umbenennen aktualisiert die eigenen Einträge sofort. Die Felder „Anzeigename“ in den Dialogen „Logo hochladen“ und „Veröffentlichen“ fallen weg, ebenso account/display-name.ts und der localStorage-Schlüssel; der Client schickt displayName: ''. Vor dem Hochladen und Veröffentlichen verlangt requireUsername() einen Namen („Abbrechen“: es passiert nichts); antwortet der Dienst mit 403 usernameRequired, öffnet sich der Namensdialog, danach ist ein neuer Versuch möglich. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3440eb46c3
commit
56cb67be4b
26 files changed
+1247
-407
No files matched your search
@@ -32,7 +32,7 @@ const prepared = (patch: Partial<PreparedLogo> = {}): PreparedLogo => ({
|
||||
...patch,
|
||||
});
|
||||
|
||||
const form: LogoForm = { name: 'Beispielbank', displayName: 'Kenso', mono: false };
|
||||
const form: LogoForm = { name: 'Beispielbank', mono: false };
|
||||
|
||||
type Call = { name: string; args: unknown[] };
|
||||
|
||||
@@ -76,15 +76,15 @@ describe('uploadPreparedLogo', () => {
|
||||
expect(permissions).toEqual(['read("any")', 'delete("user:u1")']);
|
||||
});
|
||||
|
||||
it('schickt der API die neue Datei-ID und genau vier Felder, Name und Anzeigename getrimmt', async () => {
|
||||
it('schickt der API die neue Datei-ID und genau vier Felder: der Name getrimmt, der Anzeigename immer leer (die Zeile zeigt den Benutzernamen)', async () => {
|
||||
const fake = fakeDeps();
|
||||
await uploadPreparedLogo(prepared(), { name: ' Beispielbank ', displayName: ' Kenso\t', mono: false }, fake.deps);
|
||||
expect(fake.of('uploadLogo')[0].args[0]).toEqual({ name: 'Beispielbank', displayName: 'Kenso', mono: false, fileId: 'f1' });
|
||||
await uploadPreparedLogo(prepared(), { name: ' Beispielbank ', mono: false }, fake.deps);
|
||||
expect(fake.of('uploadLogo')[0].args[0]).toEqual({ name: 'Beispielbank', displayName: '', mono: false, fileId: 'f1' });
|
||||
});
|
||||
|
||||
it('ein leerer Anzeigename bleibt leer (der Server macht daraus „Anonym“)', async () => {
|
||||
it('ein von einem alten Aufrufer mitgegebener Anzeigename geht nicht mehr mit', async () => {
|
||||
const fake = fakeDeps();
|
||||
await uploadPreparedLogo(prepared(), { ...form, displayName: ' ' }, fake.deps);
|
||||
await uploadPreparedLogo(prepared(), { ...form, displayName: 'Kenso' } as LogoForm, fake.deps);
|
||||
expect(fake.of('uploadLogo')[0].args[0]).toMatchObject({ displayName: '' });
|
||||
});
|
||||
|
||||
@@ -102,11 +102,11 @@ describe('uploadPreparedLogo', () => {
|
||||
|
||||
it('Erfolg: das neue Logo (ID des Dienstes, Datei-ID der hochgeladenen Datei, mein Konto, ohne Herzen und Meldungen), nichts wird gelöscht', async () => {
|
||||
const fake = fakeDeps();
|
||||
const logo = await uploadPreparedLogo(prepared(), { name: ' Beispielbank ', displayName: 'Kenso', mono: true }, fake.deps);
|
||||
const logo = await uploadPreparedLogo(prepared(), { name: ' Beispielbank ', mono: true }, fake.deps);
|
||||
expect(logo).toEqual({
|
||||
id: 'r1',
|
||||
name: 'Beispielbank',
|
||||
displayName: 'Kenso',
|
||||
displayName: '',
|
||||
fileId: 'f1',
|
||||
ownerId: 'u1',
|
||||
mono: true,
|
||||
@@ -266,7 +266,7 @@ describe('Standard-Abhängigkeiten (Appwrite-Bucket logo-images)', () => {
|
||||
expect(fileId).toMatch(ID_PATTERN);
|
||||
expect(file.name).toBe('logo.png');
|
||||
expect(permissions).toEqual(['read("any")', 'delete("user:u1")']);
|
||||
expect(mocks.uploadLogo).toHaveBeenCalledWith({ name: 'Beispielbank', displayName: 'Kenso', mono: false, fileId });
|
||||
expect(mocks.uploadLogo).toHaveBeenCalledWith({ name: 'Beispielbank', displayName: '', mono: false, fileId });
|
||||
expect(logo.id).toBe(`zeile-${fileId}`);
|
||||
expect(logo.fileId).toBe(fileId);
|
||||
expect(mocks.deleteFile).not.toHaveBeenCalled();
|
||||
|
||||
Reference in new issue
Block a user