feat(cosmetics): оформление «для друзей» в друзьях и личных беседах
- API: список друзей отдаёт вычисленное оформление «для друзей» одним запросом на весь список (AGENT.md 7.2) - клиент: рамка, иконка, цвет и эффект ника в списке друзей, в ленте личных бесед — из профиля собеседника - тесты: Go на список друзей, Vitest на отрисовку в друзьях
This commit is contained in:
@@ -13,6 +13,7 @@ import {
|
||||
recordedRequests,
|
||||
renderApp,
|
||||
resetStores,
|
||||
waitForPage,
|
||||
type FetchRoute,
|
||||
} from './helpers';
|
||||
|
||||
@@ -284,3 +285,40 @@ describe('галерея оформления сервера', () => {
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('оформление «для друзей»', () => {
|
||||
it('показывает рамку, иконку и эффект в списке друзей', async () => {
|
||||
const friend = {
|
||||
user_id: 'u-2',
|
||||
username: 'bob',
|
||||
display_name: 'Боб',
|
||||
status: 'online',
|
||||
visible_status: 'online',
|
||||
is_instance_admin: false,
|
||||
badges: [],
|
||||
timezone: 'Europe/Moscow',
|
||||
relationship: 'friend',
|
||||
cosmetics: { frame_id: 'f-9', badge_id: 'b-9', nick_color: 0x2ecc71, nick_effect: 'glow' },
|
||||
};
|
||||
installFetch([
|
||||
{
|
||||
match: '/api/v1/users/@me/relationships',
|
||||
response: () => json({ friends: [friend], incoming: [], outgoing: [], blocked: [] }),
|
||||
},
|
||||
{ match: '/api/v1/users/@me/channels', response: () => json({ channels: [] }) },
|
||||
{ match: '/api/v1/users/@me', response: () => json({ user }) },
|
||||
{ match: '/api/v1/instance', response: () => json({ instance: { name: 'glchat-test' } }) },
|
||||
{ match: '/api/v1/users/@me/guilds', response: () => json({ guilds: [] }) },
|
||||
]);
|
||||
renderApp('/app/friends');
|
||||
await waitForPage('Друзья');
|
||||
// Список друзей свёрнут по умолчанию: раскрываем его перед проверкой.
|
||||
await userEvent.click(await screen.findByTestId('friends-list-toggle'));
|
||||
|
||||
const row = await screen.findByTestId('friend-name-u-2');
|
||||
expect(within(row).getByTestId('avatar-frame')).toBeInTheDocument();
|
||||
expect(within(row).getByTestId('nick-badge').getAttribute('src')).toBe('/files/b-9');
|
||||
expect(within(row).getByTestId('nick-name')).toHaveClass('gl-nick-glow');
|
||||
expect(within(row).getByTestId('nick-name')).toHaveStyle({ color: '#2ecc71' });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user