All checks were successful
Build and Push Docker Image / build (push) Successful in 28s
The repo was authored prettier-style (trailing-comma 'all') but .oxfmtrc.json was set to 'es5', so every formatted file diverged. Switch the config to 'all' to match the existing code, ignore docs/** and **/drizzle/** (prose + generated snapshots the formatter should not own), and reformat the source tree once for consistency. No behavioural change; all suites green (api 60, worker 28, admin 21).
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { render, screen, within } from '@testing-library/react';
|
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import App from './App';
|
|
import { clearToken, setToken } from './lib/auth-storage';
|
|
|
|
// Stub the network layer so stub screens render without real requests.
|
|
vi.mock('./lib/api', async () => {
|
|
const actual = await vi.importActual<typeof import('./lib/api')>('./lib/api');
|
|
return {
|
|
...actual,
|
|
apiFetch: vi.fn().mockResolvedValue([]),
|
|
};
|
|
});
|
|
|
|
function renderApp() {
|
|
const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } });
|
|
return render(
|
|
<QueryClientProvider client={queryClient}>
|
|
<App />
|
|
</QueryClientProvider>,
|
|
);
|
|
}
|
|
|
|
describe('App', () => {
|
|
afterEach(() => {
|
|
clearToken();
|
|
});
|
|
|
|
it('shows the login screen when there is no token', () => {
|
|
clearToken();
|
|
renderApp();
|
|
expect(screen.getByText('E-mailadres')).toBeInTheDocument();
|
|
expect(screen.getByRole('button', { name: 'Inloggen' })).toBeInTheDocument();
|
|
});
|
|
|
|
it('shows the tab bar when a token is present', () => {
|
|
setToken('tok');
|
|
renderApp();
|
|
const tabbar = within(screen.getByRole('navigation'));
|
|
expect(tabbar.getByText('Stopwatch')).toBeInTheDocument();
|
|
expect(tabbar.getByText('Geschiedenis')).toBeInTheDocument();
|
|
expect(tabbar.getByText('Account')).toBeInTheDocument();
|
|
});
|
|
});
|