/**
* @license
* Copyright 2025 Qwen Code
* SPDX-License-Identifier: Apache-2.0
*/
import { describe, expect, it } from 'vitest';
import { renderWithProviders } from '../../../test-utils/render.js';
import { BtwMessage } from './BtwMessage.js';
describe('BtwMessage', () => {
it('is wrapped in React.memo to avoid unnecessary layout rerenders', () => {
expect((BtwMessage as unknown as { $$typeof?: symbol }).$$typeof).toBe(
Symbol.for('react.memo'),
);
});
it('renders the side question and answer', () => {
const { lastFrame } = renderWithProviders(
,
);
const output = lastFrame() ?? '';
expect(output).toContain('/btw');
expect(output).toContain('side question');
expect(output).toContain('side answer');
});
it('renders pending state with cancel hint', () => {
const { lastFrame } = renderWithProviders(
,
);
const output = lastFrame() ?? '';
expect(output).toContain('/btw');
expect(output).toContain('pending question');
expect(output).toContain('Answering...');
expect(output).toContain('Ctrl+C');
expect(output).toContain('Ctrl+D');
});
it('accepts containerWidth prop for content width calculation', () => {
const { lastFrame } = renderWithProviders(
,
);
const output = lastFrame() ?? '';
expect(output).toContain('some answer text');
});
it('renders dismiss hint when answer is complete', () => {
const { lastFrame } = renderWithProviders(
,
);
const output = lastFrame() ?? '';
expect(output).toContain('Space');
expect(output).toContain('Enter');
expect(output).toContain('Escape');
expect(output).toContain('dismiss');
});
});