Public Access
feat(questions): add questions page with open count badge
Add /questions page and a nav badge with the open count. Core decides which question is open. The page only shows and answers. Move RatingStars out of BacklogCard so both pages share it.
This commit is contained in:
1 parent
1dab069a4d
commit
d3ad19e2fa
15 files changed
+567
-33
No files matched your search
@@ -18,13 +18,44 @@ function Load() {
|
||||
return <button onClick={reloadWallet}>load</button>;
|
||||
}
|
||||
|
||||
async function loadChip(count) {
|
||||
localStorage.setItem('tbp_session', '1');
|
||||
fetchRoutes({
|
||||
'GET /api/users/me': json(200, {role: 'USER', activeRole: 'USER'}),
|
||||
'GET /api/library/steam-profile': json(200, {}),
|
||||
'GET /api/inbox': json(200, {results: [], unread: 0}),
|
||||
'GET /api/library/questions/count': json(200, {count}),
|
||||
'GET /api/rewards/wallet': json(200, {balance: 135, catalog: [], owned: [], equipped: {}, history: []}),
|
||||
});
|
||||
renderWithProviders(<><Load/><AppHeader isAuthenticated onLogout={() => {}}/></>);
|
||||
fireEvent.click(screen.getByText('load'));
|
||||
return screen.findByTitle('POINTS.TITLE: 135');
|
||||
}
|
||||
|
||||
describe('AppHeader points chip', () => {
|
||||
it('hides the number below sm while the questions icon shows, and keeps the balance as label', async () => {
|
||||
const chip = await loadChip(2);
|
||||
await screen.findByRole('link', {name: 'NAV.QUESTIONS_OPEN:2'});
|
||||
|
||||
expect(chip.getAttribute('aria-label')).toBe('POINTS.TITLE: 135');
|
||||
expect(screen.getByText('135').className).toContain('max-sm:hidden');
|
||||
});
|
||||
|
||||
it('shows the number at every width while the questions icon is hidden', async () => {
|
||||
const chip = await loadChip(0);
|
||||
await screen.findByTitle('NAV.QUESTIONS');
|
||||
|
||||
expect(chip.getAttribute('aria-label')).toBe('POINTS.TITLE: 135');
|
||||
expect(screen.getByText('135').className).not.toContain('max-sm:hidden');
|
||||
});
|
||||
|
||||
it('shows the balance as a link to the points page once the wallet is loaded', async () => {
|
||||
localStorage.setItem('tbp_session', '1');
|
||||
fetchRoutes({
|
||||
'GET /api/users/me': json(200, {role: 'USER', activeRole: 'USER'}),
|
||||
'GET /api/library/steam-profile': json(200, {}),
|
||||
'GET /api/inbox': json(200, {results: [], unread: 0}),
|
||||
'GET /api/library/questions/count': json(200, {count: 0}),
|
||||
'GET /api/rewards/wallet': json(200, {balance: 135, catalog: [], owned: [], equipped: {}, history: []}),
|
||||
});
|
||||
renderWithProviders(<><Load/><AppHeader isAuthenticated onLogout={() => {}}/></>);
|
||||
|
||||
Reference in new issue
Block a user