UNPKG

wix-style-react

Version:
177 lines (140 loc) • 6.67 kB
import React from 'react'; import textLinkDriverFactory from './TextLink.driver'; import TextLink from './TextLink'; import { createDriverFactory } from 'wix-ui-test-utils/driver-factory'; import { textLinkTestkitFactory } from '../../testkit'; import { textLinkTestkitFactory as enzymeTextLinkTestkitFactory } from '../../testkit/enzyme'; import { isTestkitExists, isEnzymeTestkitExists } from '../../test/utils/testkit-sanity'; import { spy } from 'sinon'; import { mount } from 'enzyme'; describe('TextLink', function () { var createDriver = createDriverFactory(textLinkDriverFactory); it('should have a textLink', function () { var driver = createDriver(React.createElement(TextLink, { link: '' })); expect(driver.exists()).toBeTruthy(); }); it('should render children', function () { var children = '<div>123</div>'; var driver = createDriver(React.createElement( TextLink, { link: '' }, children )); expect(driver.getContent()).toBe(children); }); it('should be with medium size by defualt', function () { var driver = createDriver(React.createElement(TextLink, { link: '' })); expect(driver.getSize()).toBe('medium'); }); it('should be with small size', function () { var driver = createDriver(React.createElement(TextLink, { link: '', size: 'small' })); expect(driver.getSize()).toBe('small'); }); //TODO - this should be deprecated it('should support deprecated darkBackground', function () { var driver = createDriver(React.createElement(TextLink, { link: '', darkBackground: true, size: 'small' })); expect(driver.isDarkBackground()).toBeTruthy(); }); it('should be with dark background', function () { var driver = createDriver(React.createElement(TextLink, { link: '', theme: 'darkBackground', size: 'small' })); expect(driver.isDarkBackground()).toBeTruthy(); }); it('should be with greyscale theme', function () { var driver = createDriver(React.createElement(TextLink, { link: '', theme: 'greyScale', size: 'small' })); expect(driver.isGreyScale()).toBeTruthy(); }); it('should get greyscale theme', function () { var driver = createDriver(React.createElement(TextLink, { link: '', theme: 'greyScale', size: 'small' })); expect(driver.getTheme()).toEqual('greyScale'); }); it('should get normal theme', function () { var driver = createDriver(React.createElement(TextLink, { link: '', size: 'small' })); expect(driver.getTheme()).toEqual('normal'); }); it('should be with light background', function () { var driver = createDriver(React.createElement(TextLink, { link: '', size: 'small' })); expect(driver.isLightBackground()).toBeTruthy(); }); it('should be with underline', function () { var driver = createDriver(React.createElement(TextLink, { link: '', underlineStyle: 'always' })); expect(driver.isUnderline()).toBeTruthy(); }); it('should not be with underline', function () { var driver = createDriver(React.createElement(TextLink, { link: '', underlineStyle: 'never' })); driver.hover(); expect(driver.isUnderline()).toBeFalsy(); }); it('should not be with underline by defualt', function () { var driver = createDriver(React.createElement(TextLink, { link: '' })); expect(driver.isUnderline()).toBeFalsy(); }); it('should have underline on hover', function () { var driver = createDriver(React.createElement(TextLink, { link: '' })); driver.hover(); expect(driver.isUnderline()).toBeTruthy(); }); it('should have a link', function () { var driver = createDriver(React.createElement(TextLink, { link: 'https://www.wix.com' })); expect(driver.getLink()).toBe('https://www.wix.com/'); }); it('should have a rel', function () { var driver = createDriver(React.createElement(TextLink, { rel: 'bookmark', target: '_blank', link: 'https://www.wix.com' })); expect(driver.getRel()).toBe('bookmark'); }); it('should have a target', function () { var driver = createDriver(React.createElement(TextLink, { target: '_blank', link: 'https://www.wix.com' })); expect(driver.getTarget()).toBe('_blank'); }); it('should call `onClick` when clicked', function () { var onClickFunc = spy(); var driver = createDriver(React.createElement(TextLink, { link: '', onClick: onClickFunc })); driver.click(); expect(onClickFunc.calledOnce).toEqual(true); }); it('should be disabled when `disabled` is true', function () { var onClick = spy(); var driver = createDriver(React.createElement(TextLink, { link: '', onClick: onClick, disabled: true })); expect(driver.isDisabled()).toBe(true); }); describe('given `onClick` without `link`', function () { it('should call `preventDefault`', function () { var onClick = spy(); var preventDefault = spy(); var driver = createDriver(React.createElement(TextLink, { onClick: onClick })); driver.click({ preventDefault: preventDefault }); expect(onClick.calledOnce).toBe(true); expect(preventDefault.calledOnce).toBe(true); }); }); describe('given `onClick` with `disabled` property', function () { it('should call `preventDefault` and not call `onClick` without `link`', function () { var onClick = spy(); var preventDefault = spy(); var driver = createDriver(React.createElement(TextLink, { onClick: onClick, disabled: true })); driver.click({ preventDefault: preventDefault }); expect(preventDefault.calledOnce).toBe(true); expect(onClick.calledOnce).toBe(false); }); it('should call `preventDefault` and not call `onClick` with `link`', function () { var onClick = spy(); var preventDefault = spy(); var driver = createDriver(React.createElement(TextLink, { link: 'http://wix.com/', onClick: onClick, disabled: true })); driver.click({ preventDefault: preventDefault }); expect(preventDefault.calledOnce).toBe(true); expect(onClick.calledOnce).toBe(false); }); }); }); describe('testkit', function () { it('should exist', function () { expect(isTestkitExists(React.createElement(TextLink, { link: '' }), textLinkTestkitFactory)).toBe(true); }); }); describe('enzyme testkit', function () { it('should exist', function () { expect(isEnzymeTestkitExists(React.createElement(TextLink, { link: '' }), enzymeTextLinkTestkitFactory, mount)).toBe(true); }); it('should not exist', function () { expect(isEnzymeTestkitExists(React.createElement(TextLink, { link: '' }), enzymeTextLinkTestkitFactory, mount, { withoutDataHook: true })).toBe(false); }); });