wix-style-react
Version:
wix-style-react
121 lines (105 loc) • 3.21 kB
JavaScript
import React from 'react';
import { createDriverFactory } from 'wix-ui-test-utils/driver-factory';
import Popover from './Popover';
import popoverDriverFactory from './Popover.driver';
describe('Popover', function () {
var createDriver = createDriverFactory(popoverDriverFactory);
it('should render', function () {
var driver = createDriver(React.createElement(
Popover,
null,
React.createElement(
Popover.Element,
null,
React.createElement(
'div',
null,
'I am the trigger!'
)
),
React.createElement(
Popover.Content,
null,
React.createElement(
'div',
null,
'I am the content!'
)
)
));
expect(driver.exists()).toBeTruthy();
});
it("should inherit core's driver methods", function () {
var onClickFn = jest.fn();
var driver = createDriver(React.createElement(
Popover,
{ shown: true, onClick: onClickFn },
React.createElement(
Popover.Element,
null,
'I am the trigger!'
),
React.createElement(
Popover.Content,
null,
'I am the content!'
)
));
expect(driver.isTargetElementExists()).toBe(true);
expect(driver.isContentElementExists()).toBe(true);
driver.click();
expect(onClickFn).toHaveBeenCalledTimes(1);
});
describe('propTypes validation', function () {
var consoleErrorSpy = void 0;
beforeEach(function () {
consoleErrorSpy = jest.spyOn(global.console, 'error').mockImplementation(jest.fn());
});
it('should throw a PropType error when not provided with Popover.Element', function () {
createDriver(React.createElement(
Popover,
null,
React.createElement(
Popover.Content,
null,
'I am the content!'
)
));
expect(consoleErrorSpy).toHaveBeenCalledWith('Warning: Failed prop type: Invalid children provided, <Popover.Element/> must be provided\n in Popover');
});
it('should throw a PropType error when not provided with Popover.Content', function () {
createDriver(React.createElement(
Popover,
null,
React.createElement(
Popover.Element,
null,
'I am the Element!'
)
));
expect(consoleErrorSpy).toHaveBeenCalledWith('Warning: Failed prop type: Invalid children provided, <Popover.Content/> must be provided\n in Popover');
});
it('should throw a PropType error when provided with unknown child', function () {
createDriver(React.createElement(
Popover,
null,
React.createElement(
Popover.Element,
null,
'I am the Element!'
),
React.createElement(
Popover.Content,
null,
'I am the content!'
),
React.createElement(
'div',
null,
'Who am I? What am I?'
)
));
expect(consoleErrorSpy).toHaveBeenCalledWith('Warning: Failed prop type: Invalid children provided, unknown child <div/> supplied\n in Popover');
});
});
});