feat(dashboard): Steam avatar and a banner from the most played game

This commit is contained in:
lobo committed 2026-09-24 15:27:33 +02:00
1 parent 2c360c9421
commit 23e502bf5b
11 files changed
+222 -37

No files matched your search

+20
View File
@@ -47,4 +47,24 @@ describe('Dashboard', () => {
expect(current.location.state).toEqual({sessionExpired: true, from: '/dashboard'});
expect(screen.queryByText('LIBRARY.EMPTY')).toBeNull();
});
it('shows the Steam avatar and the most played game of the last two weeks as banner', async () => {
const avatar = 'https://avatars.steamstatic.com/abc_full.jpg';
globalThis.fetch = vi.fn(async (url) => {
if (url.includes('/api/users/me')) return ok({email: 'a@b.de', displayName: 'Lobo', steamId: '76561198000000000'});
if (url.includes('/api/library/steam-profile')) return ok({personaName: 'Lobo', avatarUrl: avatar});
if (url.includes('/api/library/activity')) return ok({totalMinutes: 90, days: [{day: '2026-09-23', minutes: 0}, {day: '2026-09-24', minutes: 90}], recentGames: [
{appid: 1086940, name: "Baldur's Gate 3", playtimeMinutes: 900, playtime2Weeks: 90, status: 'PLAYING'}]});
if (url.includes('/api/library/games-count')) return ok({count: 1, hasSteamId: true});
return ok({content: [], total: 0, byStatus: {}});
});
const {container} = render(
<MemoryRouter initialEntries={['/dashboard']}><PreferencesProvider>
<Dashboard/>
</PreferencesProvider></MemoryRouter>,
);
await waitFor(() => expect(container.querySelector(`img[src="${avatar}"]`)).not.toBeNull());
expect(container.querySelector('img[src$="/1086940/library_hero.jpg"]')).not.toBeNull();
});
});