wix-style-react
Version:
wix-style-react
256 lines (203 loc) • 11.3 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _jestSetup = require('wix-ui-test-utils/dist/src/jest-setup');
var _MessageBoxMarketerialLayout = require('./MessageBoxMarketerialLayout');
var _MessageBoxMarketerialLayout2 = _interopRequireDefault(_MessageBoxMarketerialLayout);
var _MessageBoxMarketerialLayout3 = require('./MessageBoxMarketerialLayout.driver');
var _MessageBoxMarketerialLayout4 = _interopRequireDefault(_MessageBoxMarketerialLayout3);
var _sinon = require('sinon');
var _sinon2 = _interopRequireDefault(_sinon);
var _testkitSanity = require('../../test/utils/testkit-sanity');
var _testkit = require('../../testkit');
var _enzyme = require('../../testkit/enzyme');
var _enzyme2 = require('enzyme');
var _deprecationLog = require('../utils/deprecationLog');
var _react3 = require('../../test/utils/react');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('MessageBoxMarketerialLayout', function () {
var render = (0, _react3.createRendererWithDriver)(_MessageBoxMarketerialLayout4.default);
var createDriver = function createDriver(jsx) {
return render(jsx).driver;
};
afterEach(function () {
return (0, _react3.cleanup)();
});
var requiredProps = {
title: 'title',
content: _react2.default.createElement('div', null),
onClose: function onClose() {}
};
describe('action buttons', function () {
it('should display the primary button label text on top the primary button', function () {
var props = Object.assign({}, requiredProps, {
primaryButtonLabel: 'primaryButtonLabel'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, _extends({}, props, { fixImagePosition: true })));
expect(driver.getPrimaryButtonText()).toBe(props.primaryButtonLabel);
});
it('should display the primary button with custom them', function () {
var props = Object.assign({}, requiredProps, {
primaryButtonLabel: 'primaryButtonLabel',
primaryButtonTheme: 'purple'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getPrimaryButton().className).toContain('fullpurple');
});
it('should not display the primary button if primary button label was not passed', function () {
var props = Object.assign({}, requiredProps, {});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getPrimaryButton()).toBeNull();
});
it('should not display disabled primary button if primaryButtonDisabled is true', function () {
var props = Object.assign({}, requiredProps, {
primaryButtonLabel: 'primaryButtonLabel',
primaryButtonDisabled: true
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getPrimaryButton().attributes.disabled).toBeTruthy();
});
it('should display the secondary button label text on top the secondary button', function () {
var props = Object.assign({}, requiredProps, {
secondaryButtonLabel: 'secondaryButtonLabel'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getSecondaryButtonText()).toBe(props.secondaryButtonLabel);
});
it('should not display the secondary button if secondary button label was not passed', function () {
var props = Object.assign({}, requiredProps, {});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getSecondaryButton()).toBeNull();
});
it('should trigger the primary button action upon clicking the primary button', function () {
var props = Object.assign({}, requiredProps, {
onPrimaryButtonClick: _sinon2.default.spy(),
primaryButtonLabel: 'primaryButtonLabel'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
driver.clickOnPrimaryButton();
expect(props.onPrimaryButtonClick.calledOnce).toBeTruthy();
});
it('should trigger the secondary button action upon clicking the secondary button', function () {
var props = Object.assign({}, requiredProps, {
onSecondaryButtonClick: _sinon2.default.spy(),
secondaryButtonLabel: 'secondaryButtonLabel'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
driver.clickOnSecondaryButton();
expect(props.onSecondaryButtonClick.calledOnce).toBeTruthy();
});
it('should close the message dialog upon clicking the close button', function () {
var props = Object.assign({}, requiredProps, {
onClose: _sinon2.default.spy()
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
driver.closeMessageBox();
expect(props.onClose.calledOnce).toBeTruthy();
});
});
describe('general', function () {
it('should render title', function () {
var props = Object.assign({}, requiredProps, {
title: 'title'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getTitle()).toBe(props.title);
});
it('should render the passed content in the markup', function () {
var props = Object.assign({}, requiredProps, {
content: _react2.default.createElement('div', { 'data-hook': 'inner-div' })
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getContentBySelector('[data-hook="inner-div"]')).not.toBeNull();
});
it('should render image from given imageUrl', function () {
var props = Object.assign({}, requiredProps, {
imageUrl: 'http://www.domstechblog.com/wp-content/uploads/2015/09/wix.png'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getImageSrc()).toBe(props.imageUrl);
});
it('should render image from given component', function () {
var props = Object.assign({}, requiredProps, {
imageComponent: _react2.default.createElement('div', { 'data-hook': 'image-component-test' })
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getContentBySelector('[data-hook="image-component-test"]')).not.toBeNull();
});
it('should use default color theme (blue) if none was passed', function () {
var props = Object.assign({}, requiredProps, {
primaryButtonLabel: 'primaryButtonLabel'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getPrimaryButton().className).toContain('fullblue');
});
it('should use color theme', function () {
var props = Object.assign({}, requiredProps, {
primaryButtonLabel: 'primaryButtonLabel',
theme: 'purple'
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getPrimaryButton().className).toContain('fullpurple');
});
});
describe('footer children', function () {
it('should render the passed footer content', function () {
var props = Object.assign({}, requiredProps, {
footerBottomChildren: _react2.default.createElement('div', { 'data-hook': 'inner-div' })
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getContentBySelector('[data-hook="inner-div"]')).not.toBeNull();
expect(driver.getContentBySelector('[data-hook="footer-layout-bottom-children"]')).not.toBeNull();
});
it('should not render secondary button when footer content passed', function () {
var props = Object.assign({}, requiredProps, {
footerBottomChildren: _react2.default.createElement('div', { 'data-hook': 'inner-div' })
});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getSecondaryButton()).toBeNull();
});
it('should not render footer\'s wrapper div when footer content isn\'t passed', function () {
var props = Object.assign({}, requiredProps, {});
var driver = createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, props));
expect(driver.getContentBySelector('[data-hook="footer-layout-bottom-children"]')).toBeNull();
});
});
describe('deprecationLog fixImagePosition', function () {
var depLogSpy = void 0;
beforeEach(function () {
depLogSpy = jest.spyOn(_deprecationLog.depLogger, 'log');
});
afterEach(function () {
return depLogSpy.mockRestore();
});
it('should show deprecationLog', function () {
createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, _extends({}, requiredProps, { imageUrl: 'blah' })));
expect(depLogSpy).toBeCalledWith('MessageBoxMarketerialLayout have issue with image positioning. Please use fixImagePosition prop to fix it. Next major version will have a fix by default.');
});
it('should show deprecationLog and warn of imageUrl not a string', function () {
createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, _extends({}, requiredProps, { imageUrl: 4 })));
expect(_jestSetup.consoleErrors.get()).toHaveLength(1);
expect(_jestSetup.consoleErrors.get()[0].includes('Invalid')).toBeTruthy();
_jestSetup.consoleErrors.reset(); // prevent test from failing
});
it('should NOT show deprecationLog when fixImgPosition is provided', function () {
createDriver(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, _extends({}, requiredProps, {
imageUrl: 'blah',
fixImagePosition: true
})));
expect(depLogSpy).not.toHaveBeenCalled();
});
});
describe('testkit', function () {
it('should exist', function () {
expect((0, _testkitSanity.isTestkitExists)(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, requiredProps), _testkit.messageBoxMarketerialLayoutTestkitFactory)).toBe(true);
});
});
describe('enzyme testkit', function () {
it('should exist', function () {
expect((0, _testkitSanity.isEnzymeTestkitExists)(_react2.default.createElement(_MessageBoxMarketerialLayout2.default, requiredProps), _enzyme.messageBoxMarketerialLayoutTestkitFactory, _enzyme2.mount)).toBe(true);
});
});
});