webhook-trigger-panel.test.tsx1.6 KBView on GitHub import { render, screen, fireEvent } from '@testing-library/react';
import { WebhookTriggerPanelView } from '@/modules/documents/playbook/WebhookTriggerPanel';
const URL = 'https://api.example.com/webhooks/playbook/abc123';
describe('WebhookTriggerPanelView', () => {
it('shows the POST URL and a curl example when a url is present', () => {
render(
<WebhookTriggerPanelView url={URL} enabled onRotate={() => {}} onToggleEnabled={() => {}} />,
);
expect((screen.getByTestId('webhook-url') as HTMLInputElement).value).toBe(URL);
expect(screen.getByText(/curl -X POST/)).toBeInTheDocument();
});
it('shows a generating message (not a URL) while loading with no url yet', () => {
render(<WebhookTriggerPanelView enabled loading onRotate={() => {}} onToggleEnabled={() => {}} />);
expect(screen.getByText(/Generating webhook URL/)).toBeInTheDocument();
expect(screen.queryByTestId('webhook-url')).not.toBeInTheDocument();
});
it('calls onRotate when Rotate URL is clicked', () => {
const onRotate = jest.fn();
render(
<WebhookTriggerPanelView url={URL} enabled onRotate={onRotate} onToggleEnabled={() => {}} />,
);
fireEvent.click(screen.getByRole('button', { name: /Rotate URL/i }));
expect(onRotate).toHaveBeenCalledTimes(1);
});
it('calls onToggleEnabled when the switch is toggled', () => {
const onToggleEnabled = jest.fn();
render(
<WebhookTriggerPanelView
url={URL}
enabled
onRotate={() => {}}
onToggleEnabled={onToggleEnabled}
/>,
);
fireEvent.click(screen.getByRole('switch'));
expect(onToggleEnabled).toHaveBeenCalledWith(false);
});
});