import { mockAppRoot } from '@rocket.chat/mock-providers';
import { render, screen } from '@testing-library/react';
import SearchSourceResult from './SearchSourceResult';
import '@testing-library/jest-dom';
jest.mock('../../lib/rooms/roomCoordinator', () => ({
roomCoordinator: {
getRouteLink: jest.fn(() => '/channel/general'),
},
}));
describe('SearchSourceResult', () => {
it('renders source metadata, markdown, and a message link', () => {
render(
,
{ wrapper: mockAppRoot().build() },
);
expect(screen.getByText('Search User')).toBeInTheDocument();
expect(screen.getByText('@search.user')).toBeInTheDocument();
expect(screen.getByText('General')).toBeInTheDocument();
expect(screen.getByText('61%')).toBeInTheDocument();
expect(screen.getByText('Oranges').tagName).toBe('STRONG');
expect(screen.getByRole('link')).toHaveAttribute('href', '/channel/general?msg=message-id');
});
it('clamps an out-of-range relevance score to 100%', () => {
render(
,
{ wrapper: mockAppRoot().build() },
);
expect(screen.getByText('100%')).toBeInTheDocument();
});
it('does not render a link when the source has no resolvable room', () => {
render(
,
{ wrapper: mockAppRoot().build() },
);
expect(screen.getByText('orphan message')).toBeInTheDocument();
expect(screen.queryByRole('link')).not.toBeInTheDocument();
});
});