Files
nimbus/resources/js/tests/components/domain/Client/Request/RequestBuilder.test.ts
Mazen Touati 6ba071dc98 test: front-end tests cleanup (round 1)
the aim is to make the tests more about the behavior rather than implementation, add some missing tests, and improve the code.
2025-11-16 19:03:40 +01:00

52 lines
1.9 KiB
TypeScript

import RequestBuilder from '@/components/domain/Client/Request/RequestBuilder.vue';
import { renderWithProviders, screen } from '@/tests/_utils/test-utils';
import { describe, expect, it, vi } from 'vitest';
vi.mock('@/components/domain/Client/Request', () => ({
RequestBuilderEndpoint: {
name: 'RequestBuilderEndpoint',
template: '<div data-testid="request-builder-endpoint">Endpoint</div>',
},
RequestParameters: {
name: 'RequestParameters',
template: '<div data-testid="request-parameters">Parameters Panel</div>',
},
RequestBody: {
name: 'RequestBody',
template: '<div data-testid="request-body">Body Panel</div>',
},
RequestAuthorization: {
name: 'RequestAuthorization',
template: '<div data-testid="request-authorization">Authorization Panel</div>',
},
RequestHeaders: {
name: 'RequestHeaders',
template: '<div data-testid="request-headers">Headers Panel</div>',
},
}));
describe('RequestBuilder', () => {
it('renders endpoint selector and body tab by default', () => {
renderWithProviders(RequestBuilder);
expect(screen.getByTestId('request-builder-endpoint')).toBeInTheDocument();
expect(screen.getByTestId('request-body')).toBeVisible();
});
it('switches between panels when different tabs are selected', async () => {
const { user } = renderWithProviders(RequestBuilder);
await user.click(screen.getByRole('tab', { name: 'Parameters' }));
expect(screen.getByTestId('request-parameters')).toBeVisible();
await user.click(screen.getByRole('tab', { name: 'Authorization' }));
expect(screen.getByTestId('request-authorization')).toBeVisible();
await user.click(screen.getByRole('tab', { name: 'Headers' }));
expect(screen.getByTestId('request-headers')).toBeVisible();
});
});