wix-style-react
Version:
wix-style-react
147 lines (118 loc) • 4.82 kB
JavaScript
'use strict';
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _driverFactory = require('wix-ui-test-utils/driver-factory');
var _SideMenu = require('./SideMenu.driver');
var _SideMenu2 = _interopRequireDefault(_SideMenu);
var _index = require('../index');
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
describe('SideMenu', function () {
var createDriver = (0, _driverFactory.createDriverFactory)(_SideMenu2.default);
function createComponent(_ref) {
var header = _ref.header,
navigation = _ref.navigation,
promotion = _ref.promotion,
footer = _ref.footer;
return createDriver(_react2.default.createElement(
_index2.default,
null,
header && _react2.default.createElement(
_index2.default.Header,
null,
header
),
navigation && _react2.default.createElement(
_index2.default.Navigation,
null,
navigation
),
promotion && _react2.default.createElement(
_index2.default.Promotion,
null,
promotion
),
footer && _react2.default.createElement(
_index2.default.Footer,
null,
footer
)
));
}
it('should render empty menu', function () {
var driver = createComponent({});
expect(driver.exists()).toBe(true);
expect(driver.hasHeader()).toBe(false);
expect(driver.hasNavigation()).toBe(false);
expect(driver.hasPromotion()).toBe(false);
expect(driver.hasFooter()).toBe(false);
});
it('should render full menu', function () {
var menu = {
header: 'Hello Header',
navigation: [_react2.default.createElement(_index2.default.NavigationLink, { key: '0', href: '//wix.com' }), _react2.default.createElement(_index2.default.NavigationSeparator, { key: '1' }), _react2.default.createElement(_index2.default.NavigationLink, { key: '2', href: '//wix.com' })],
promotion: 'Hello Promotion',
footer: 'Hello Footer'
};
var driver = createComponent(menu);
expect(driver.exists()).toBe(true);
expect(driver.hasHeader()).toBe(true);
expect(driver.headerContent()).toBe(menu.header);
expect(driver.hasNavigation()).toBe(true);
expect(driver.navigationLinks()).toHaveLength(2);
expect(driver.navigationSeparators()).toHaveLength(1);
expect(driver.hasPromotion()).toBe(true);
expect(driver.promotionContent()).toBe(menu.promotion);
expect(driver.hasFooter()).toBe(true);
expect(driver.footerContent()).toBe(menu.footer);
});
it('should render a sub menu', function () {
var menu = {
navigation: [_react2.default.createElement(
_index2.default.NavigationBackLink,
{ key: '0' },
'Back'
), _react2.default.createElement(
_index2.default.NavigationCategory,
{ key: '1' },
'Category 1'
), _react2.default.createElement(_index2.default.NavigationLink, { key: '2', href: '//wix.com' })]
};
var driver = createComponent(menu);
expect(driver.hasBackLink()).toBe(true);
expect(driver.navigationCategories()).toHaveLength(1);
expect(driver.navigationLinks()).toHaveLength(1);
});
it('should allow to click on a back menu', function () {
var spy = jest.fn();
var menu = {
navigation: [_react2.default.createElement(
_index2.default.NavigationBackLink,
{ key: '0', onBackHandler: spy },
'Back'
)]
};
var driver = createComponent(menu);
driver.clickBackLink();
expect(spy).toHaveBeenCalled();
});
it('should allow to select a menu navigation link', function () {
var spy = jest.fn();
var menu = {
navigation: [_react2.default.createElement(_index2.default.NavigationLink, { key: '0' }), _react2.default.createElement(_index2.default.NavigationLink, { key: '1', onClick: spy }), _react2.default.createElement(_index2.default.NavigationLink, { key: '2' })]
};
var driver = createComponent(menu);
driver.clickLinkByIndex(1);
expect(spy).toHaveBeenCalled();
});
it('should allow to have a badge', function () {
var badge = _react2.default.createElement(_index2.default.NavigationBadge, null);
var menu = {
navigation: [_react2.default.createElement(_index2.default.NavigationLink, { key: '0' }), _react2.default.createElement(_index2.default.NavigationLink, { key: '1', badge: badge }), _react2.default.createElement(_index2.default.NavigationLink, { key: '2' })]
};
var driver = createComponent(menu);
expect(driver.isLinkBadgeVisibleByIndex(0)).toBe(false);
expect(driver.isLinkBadgeVisibleByIndex(1)).toBe(true);
expect(driver.isLinkBadgeVisibleByIndex(2)).toBe(false);
});
});