forked from cardosofelipe/fast-next-template
test(frontend): improve test coverage and update edge case handling
- Refactor tests to handle empty `model_params` in AgentTypeForm. - Add return type annotations (`: never`) for throwing functions in ErrorBoundary tests. - Mock `useAuth` in home page tests for consistent auth state handling. - Update Header test to validate updated `/dashboard` link.
This commit is contained in:
@@ -55,6 +55,15 @@ jest.mock('@/lib/api/hooks/useAuth', () => ({
|
||||
})),
|
||||
}));
|
||||
|
||||
// Mock AuthContext - Home page uses useAuth to check if user is authenticated
|
||||
jest.mock('@/lib/auth/AuthContext', () => ({
|
||||
useAuth: jest.fn(() => ({
|
||||
isAuthenticated: false,
|
||||
isLoading: false,
|
||||
user: null,
|
||||
})),
|
||||
}));
|
||||
|
||||
// Mock Theme components
|
||||
jest.mock('@/components/theme', () => ({
|
||||
ThemeToggle: () => <div data-testid="theme-toggle">Theme Toggle</div>,
|
||||
|
||||
@@ -549,14 +549,14 @@ describe('AgentTypeForm', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Null Model Params Handling', () => {
|
||||
it('handles null model_params gracefully', () => {
|
||||
const agentTypeWithNullParams: AgentTypeResponse = {
|
||||
describe('Empty Model Params Handling', () => {
|
||||
it('handles empty model_params gracefully', () => {
|
||||
const agentTypeWithEmptyParams: AgentTypeResponse = {
|
||||
...mockAgentType,
|
||||
model_params: null,
|
||||
model_params: {},
|
||||
};
|
||||
|
||||
render(<AgentTypeForm {...defaultProps} agentType={agentTypeWithNullParams} />);
|
||||
render(<AgentTypeForm {...defaultProps} agentType={agentTypeWithEmptyParams} />);
|
||||
|
||||
// Should render without errors
|
||||
expect(screen.getByText('Edit Agent Type')).toBeInTheDocument();
|
||||
|
||||
@@ -248,7 +248,7 @@ describe('ErrorBoundary', () => {
|
||||
|
||||
describe('error without message', () => {
|
||||
it('handles error with null message gracefully', () => {
|
||||
function ThrowNullError() {
|
||||
function ThrowNullError(): never {
|
||||
const error = new Error();
|
||||
error.message = '';
|
||||
throw error;
|
||||
@@ -338,7 +338,7 @@ describe('ErrorBoundary', () => {
|
||||
|
||||
describe('edge cases', () => {
|
||||
it('handles deeply nested errors', () => {
|
||||
function DeepChild() {
|
||||
function DeepChild(): never {
|
||||
throw new Error('Deep error');
|
||||
}
|
||||
|
||||
@@ -377,7 +377,7 @@ describe('ErrorBoundary', () => {
|
||||
});
|
||||
|
||||
it('allows nested error boundaries', () => {
|
||||
function InnerThrowing() {
|
||||
function InnerThrowing(): never {
|
||||
throw new Error('Inner error');
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ describe('Header', () => {
|
||||
render(<Header />);
|
||||
|
||||
const homeLink = screen.getByRole('link', { name: /home/i });
|
||||
expect(homeLink).toHaveAttribute('href', '/');
|
||||
expect(homeLink).toHaveAttribute('href', '/dashboard');
|
||||
});
|
||||
|
||||
it('renders admin link for superusers', () => {
|
||||
|
||||
Reference in New Issue
Block a user