mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-17 16:51:15 -07:00
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { render } from '../../test-utils/render.js';
|
|
import { describe, it, expect, vi, beforeEach, type Mock } from 'vitest';
|
|
import { act } from 'react';
|
|
import { CloudPaidPrivacyNotice } from './CloudPaidPrivacyNotice.js';
|
|
import { useKeypress } from '../hooks/useKeypress.js';
|
|
|
|
// Mocks
|
|
vi.mock('../hooks/useKeypress.js', () => ({
|
|
useKeypress: vi.fn(),
|
|
}));
|
|
|
|
const mockedUseKeypress = useKeypress as Mock;
|
|
|
|
describe('CloudPaidPrivacyNotice', () => {
|
|
const onExit = vi.fn();
|
|
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
});
|
|
|
|
it('renders correctly', async () => {
|
|
const { lastFrame, unmount } = await render(
|
|
<CloudPaidPrivacyNotice onExit={onExit} />,
|
|
);
|
|
|
|
expect(lastFrame()).toContain('Vertex AI Notice');
|
|
expect(lastFrame()).toContain('Service Specific Terms');
|
|
expect(lastFrame()).toContain('Press Esc to exit');
|
|
unmount();
|
|
});
|
|
|
|
it('exits on Escape', async () => {
|
|
const { waitUntilReady, unmount } = await render(
|
|
<CloudPaidPrivacyNotice onExit={onExit} />,
|
|
);
|
|
|
|
const keypressHandler = mockedUseKeypress.mock.calls[0][0];
|
|
await act(async () => {
|
|
keypressHandler({ name: 'escape' });
|
|
});
|
|
// Escape key has a 50ms timeout in KeypressContext, so we need to wrap waitUntilReady in act
|
|
await act(async () => {
|
|
await waitUntilReady();
|
|
});
|
|
|
|
expect(onExit).toHaveBeenCalled();
|
|
unmount();
|
|
});
|
|
});
|