/**
* Copyright (c) Paymium.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root of this projects source tree.
*/
import { render } from '@crossed/test';
import { Tooltip } from '../index';
import { Popover } from '../../overlay';
import { Text } from '../../typography';
jest.mock('../../overlay', () => ({
Popover: Object.assign(
jest.fn(({ children }) => children),
{
Trigger: jest.fn(({ children }) => children),
Content: jest.fn(({ children }) => children),
}
),
}));
const PopoverMocked = jest.mocked(Popover);
describe('Tooltip', () => {
afterEach(() => {
jest.clearAllMocks();
});
test('renders with default props', () => {
render(
Hover me
Tooltip text
);
const call = PopoverMocked.mock.calls[0][0];
expect(call).toHaveProperty('placement', 'bottom');
expect(call).toHaveProperty('triggerStrategy', 'onPointerEnter');
expect(call).toHaveProperty('children');
});
test('accepts custom placement', () => {
render(
Hover me
Tooltip text
);
const call = PopoverMocked.mock.calls[0][0];
expect(call).toHaveProperty('placement', 'top');
});
test('accepts custom triggerStrategy', () => {
render(
Click me
Tooltip text
);
const call = PopoverMocked.mock.calls[0][0];
expect(call).toHaveProperty('triggerStrategy', 'onPress');
});
test('forwards additional props to Popover', () => {
render(
Hover me
Tooltip text
);
const call = PopoverMocked.mock.calls[0][0];
expect(call).toHaveProperty('offsetValue', 20);
});
test('renders all static components', () => {
expect(Tooltip.Trigger).toBeDefined();
expect(Tooltip.Content).toBeDefined();
expect(Tooltip.Text).toBeDefined();
});
test('Tooltip.Text has correct displayName', () => {
expect(Tooltip.Text.displayName).toBe('Tooltip.Text');
});
test('renders Trigger with Popover.Trigger', () => {
const PopoverTriggerMocked = jest.mocked(Popover.Trigger);
render(
Hover me
Tooltip text
);
expect(PopoverTriggerMocked).toHaveBeenCalled();
});
test('renders Content with Popover.Content', () => {
const PopoverContentMocked = jest.mocked(Popover.Content);
render(
Hover me
Tooltip text
);
expect(PopoverContentMocked).toHaveBeenCalled();
});
});