wix-style-react
Version:
wix-style-react
228 lines (202 loc) • 6.6 kB
JavaScript
import React from 'react';
import Tag from './Tag';
import tagPrivateDriverFactory from './Tag.driver.private';
import { createDriverFactory } from 'wix-ui-test-utils/driver-factory';
import { SIZES, WEIGHTS } from '../Text/constants';
describe('Tag', function () {
var createDriver = createDriverFactory(tagPrivateDriverFactory);
var id = 'myId';
var label = 'Hey';
describe('size', function () {
it('should have a default small size', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
label
));
expect(driver.isSmall()).toBeTruthy();
});
it('should have a tiny size', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, size: 'tiny' },
label
));
expect(driver.isTiny()).toBeTruthy();
expect(driver.isCloseButtonSmall()).toBeTruthy();
expect(driver.getTextSize()).toBe(SIZES.tiny);
expect(driver.getTextWeight()).toBe(WEIGHTS.thin);
});
it('should have a small size', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, size: 'small' },
label
));
expect(driver.isSmall()).toBeTruthy();
expect(driver.isCloseButtonSmall()).toBeTruthy();
expect(driver.getTextSize()).toBe(SIZES.small);
expect(driver.getTextWeight()).toBe(WEIGHTS.normal);
});
it('should have a medium size', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, size: 'medium' },
label
));
expect(driver.isMedium()).toBeTruthy();
expect(driver.isCloseButtonSmall()).toBeTruthy();
expect(driver.getTextSize()).toBe(SIZES.small);
expect(driver.getTextWeight()).toBe(WEIGHTS.normal);
});
it('should have a large size', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, size: 'large' },
label
));
expect(driver.isLarge()).toBeTruthy();
expect(driver.getTextSize()).toBe(SIZES.medium);
expect(driver.getTextWeight()).toBe(WEIGHTS.normal);
});
});
it('should have a label', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
label
));
expect(driver.getLabel()).toBe(label);
});
it('should be removable by default', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
label
));
expect(driver.isRemovable()).toBeTruthy();
});
it('should not be removable', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, removable: false },
label
));
expect(driver.isRemovable()).toBeFalsy();
});
it('should have not remove button if disabled is true', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, disabled: true },
label
));
expect(driver.isRemovable()).toBeFalsy();
});
it('should have disabled class if disabled is true', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, disabled: true },
label
));
expect(driver.isDisabled()).toBeTruthy();
});
it('should call onRemove function on remove', function () {
var onRemove = jest.fn();
var onClick = jest.fn();
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, onRemove: onRemove, onClick: onClick },
label
));
driver.removeTag();
expect(onRemove).toBeCalledWith(id);
expect(onClick).not.toBeCalled();
});
it('should call onClick function on click', function () {
var onClick = jest.fn();
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, onClick: onClick },
label
));
driver.click();
expect(onClick).toBeCalledWith(id);
});
it('should not have pointer cursor when not passed onClick', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
label
));
expect(driver.isClickable()).toBeFalsy();
});
it('should have pointer cursor when passed onClick', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, onClick: jest.fn() },
label
));
expect(driver.isClickable()).toBeTruthy();
});
it('should not display thumb by default', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
label
));
expect(driver.isThumbExists()).toBeFalsy();
});
it('should display thumb', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, thumb: React.createElement(
'span',
null,
'Ho'
) },
label
));
expect(driver.isThumbExists()).toBeTruthy();
});
describe('theme attribute', function () {
it('should have standard theme by default', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id },
'a'
));
expect(driver.isStandardTheme()).toBe(true);
});
it('should have warning theme', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, theme: 'warning' },
'a'
));
expect(driver.isWarningTheme()).toBe(true);
});
it('should have error theme', function () {
var driver = createDriver(React.createElement(
Tag,
{ useOldMargins: false, id: id, theme: 'error' },
'a'
));
expect(driver.isErrorTheme()).toBe(true);
});
});
describe('deprecation', function () {
var cachedConsoleWarn = global.console.warn;
it('should warn with deprecation message for using old margins', function () {
var consoleLogWarnMock = jest.fn();
global.console.warn = consoleLogWarnMock;
createDriver(React.createElement(
Tag,
{ id: '123' },
'a'
));
expect(global.console.warn).toBeCalled();
expect(consoleLogWarnMock.mock.calls[0][0]).toMatch(/useOldMargins={false}/);
global.console.warn = cachedConsoleWarn;
});
});
});