69 lines
2.1 KiB
TypeScript
69 lines
2.1 KiB
TypeScript
import { render, type RenderOptions, screen } from '@testing-library/react';
|
|
import userEvent from '@testing-library/user-event';
|
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
import { resolveAcpPermissionRequest } from '../acp/permissionRequests';
|
|
import { IntlTestWrapper } from '../i18n/test-utils';
|
|
import ToolApprovalButtons from './ToolApprovalButtons';
|
|
|
|
vi.mock('../acp/permissionRequests', () => ({
|
|
resolveAcpPermissionRequest: vi.fn(),
|
|
}));
|
|
|
|
const renderWithIntl = (ui: React.ReactElement, options?: RenderOptions) =>
|
|
render(ui, { wrapper: IntlTestWrapper, ...options });
|
|
|
|
const resolveAcpPermissionRequestMock = vi.mocked(resolveAcpPermissionRequest);
|
|
|
|
describe('ToolApprovalButtons', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
it('marks the approval accepted when the ACP request resolves', async () => {
|
|
resolveAcpPermissionRequestMock.mockReturnValueOnce(true);
|
|
|
|
renderWithIntl(
|
|
<ToolApprovalButtons
|
|
data={{
|
|
id: 'tool-call-approved',
|
|
toolName: 'developer__shell',
|
|
sessionId: 'session-1',
|
|
}}
|
|
/>
|
|
);
|
|
|
|
await userEvent.click(screen.getByRole('button', { name: 'Allow Once' }));
|
|
|
|
expect(resolveAcpPermissionRequestMock).toHaveBeenCalledWith(
|
|
'session-1',
|
|
'tool-call-approved',
|
|
'allow_once'
|
|
);
|
|
expect(screen.getByText('developer__shell - Allowed once')).toBeInTheDocument();
|
|
});
|
|
|
|
it('shows a stale request error when ACP has no pending request', async () => {
|
|
resolveAcpPermissionRequestMock.mockReturnValueOnce(false);
|
|
|
|
renderWithIntl(
|
|
<ToolApprovalButtons
|
|
data={{
|
|
id: 'tool-call-rerun',
|
|
toolName: 'developer__shell',
|
|
sessionId: 'session-1',
|
|
}}
|
|
/>
|
|
);
|
|
|
|
await userEvent.click(screen.getByRole('button', { name: 'Allow Once' }));
|
|
|
|
expect(resolveAcpPermissionRequestMock).toHaveBeenCalledWith(
|
|
'session-1',
|
|
'tool-call-rerun',
|
|
'allow_once'
|
|
);
|
|
expect(screen.getByText('This approval request is no longer active.')).toBeInTheDocument();
|
|
expect(screen.queryByText('developer__shell - Allowed once')).not.toBeInTheDocument();
|
|
});
|
|
});
|