@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
169 lines (145 loc) • 6.06 kB
JavaScript
;
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _testUtils = require("react-dom/test-utils");
var _testUtils2 = _interopRequireDefault(_testUtils);
var _chai = require("chai");
var _avatar = require("../../avatar");
var _avatar2 = _interopRequireDefault(_avatar);
var _icon = require("../../icon");
var _icon2 = _interopRequireDefault(_icon);
var _iconSettings = require("../../icon-settings");
var _iconSettings2 = _interopRequireDefault(_iconSettings);
var _pillContainer = require("../../pill-container");
var _pillContainer2 = _interopRequireDefault(_pillContainer);
var _enzymeHelpers = require("../../../tests/enzyme-helpers");
var _keyCode = require("../../../utilities/key-code");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable react/no-find-dom-node */
var Simulate = _testUtils2.default.Simulate;
var options = [{
id: '1',
label: 'Pill Label 1',
title: 'Full pill label verbiage mirrored here'
}, {
icon: _react2.default.createElement(_icon2.default, {
category: "standard",
name: "account",
title: "Account"
}),
id: '2',
label: 'Pill Label 2',
title: 'Full pill label verbiage mirrored here'
}, {
icon: {
category: 'standard',
name: 'account'
},
id: '3',
label: 'Pill Label 3',
title: 'Full pill label verbiage mirrored here'
}, {
avatar: _react2.default.createElement(_avatar2.default, {
imgSrc: "https://lightningdesignsystem.com/assets/images/avatar1.jpg",
title: "User 4",
variant: "user"
}),
id: '4',
label: 'Pill Label 4',
title: 'Full pill label verbiage mirrored here'
}, {
avatar: {
imgSrc: 'https://lightningdesignsystem.com/assets/images/avatar1.jpg',
title: 'User 5'
},
id: '5',
label: 'Pill Label 5',
title: 'Full pill label verbiage mirrored here'
}, {
bare: true,
id: '6',
label: 'Pill Label 6',
title: 'Full pill label verbiage mirrored here'
}, {
error: true,
id: '7',
label: 'Pill Label 7',
title: 'Full pill label verbiage mirrored here'
}];
describe('SLDSPillContainer', function () {
describe('Base', function () {
var clickData = {};
var requestRemoveData = {};
beforeEach((0, _enzymeHelpers.mountComponent)(_react2.default.createElement(_iconSettings2.default, {
iconPath: "/assets/icons"
}, _react2.default.createElement(_pillContainer2.default, {
options: options,
onClickPill: function onClickPill(event, data) {
clickData = data;
},
onRequestRemovePill: function onRequestRemovePill(event, data) {
requestRemoveData = data;
}
}))));
afterEach(_enzymeHelpers.unmountComponent);
it('Renders the base Pill Container correctly', function () {
var idOfCurrentPill = 1;
(0, _chai.expect)(this.wrapper.find('.slds-pill_container').length).to.eql(1);
(0, _chai.expect)(this.wrapper.find('ul.slds-listbox').length).to.eql(1);
this.wrapper.find('ul.slds-listbox .slds-pill').forEach(function (pill) {
(0, _chai.expect)(pill.find('.slds-pill__label').text()).to.eql("Pill Label ".concat(idOfCurrentPill));
Simulate.click(pill.getDOMNode());
(0, _chai.expect)(clickData.option.id).to.eql("".concat(idOfCurrentPill));
Simulate.click(pill.find('.slds-pill__remove').getDOMNode());
(0, _chai.expect)(requestRemoveData.option.id).to.eql("".concat(idOfCurrentPill));
if (idOfCurrentPill === 2 || idOfCurrentPill === 3) {
(0, _chai.expect)(pill.find('.slds-icon_container.slds-icon-standard-account').length).to.eql(1);
} else if (idOfCurrentPill === 4 || idOfCurrentPill === 5) {
(0, _chai.expect)(pill.find('.slds-avatar.slds-avatar_circle.slds-avatar_medium').length).to.eql(1);
} else if (idOfCurrentPill === 6) {
(0, _chai.expect)(pill.find('.slds-pill_bare').length).to.eql(1);
} else if (idOfCurrentPill === 7) {
(0, _chai.expect)(pill.find('.slds-has-error').length).to.eql(1);
}
idOfCurrentPill++;
});
});
it('Handles keyboard navigation properly', function () {
var getFocusedPillLabel = function getFocusedPillLabel() {
return document.activeElement.querySelector('.slds-pill__label').innerText;
};
var i = 1;
Simulate.focus(this.wrapper.find('.slds-pill_container').find('.slds-pill').first().getDOMNode());
for (i = 1; i < 7; i++) {
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.RIGHT);
(0, _chai.expect)(getFocusedPillLabel()).to.eql(options[i].label);
}
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.RIGHT);
(0, _chai.expect)(getFocusedPillLabel()).to.eql(options[0].label);
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.LEFT);
(0, _chai.expect)(getFocusedPillLabel()).to.eql(options[6].label);
for (i = 0; i < 3; i++) {
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.LEFT);
}
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.DELETE);
(0, _chai.expect)(requestRemoveData.option.label).to.eql(options[3].label);
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.LEFT);
Simulate.keyDown(document.activeElement, _keyCode.keyObjects.BACKSPACE);
(0, _chai.expect)(requestRemoveData.option.label).to.eql(options[2].label);
});
});
describe('Bare', function () {
beforeEach((0, _enzymeHelpers.mountComponent)(_react2.default.createElement(_iconSettings2.default, {
iconPath: "/assets/icons"
}, _react2.default.createElement(_pillContainer2.default, {
options: options,
variant: "bare"
}))));
afterEach(_enzymeHelpers.unmountComponent);
it('Renders the bare Pill Container correctly', function () {
this.wrapper.find('ul.slds-listbox .slds-pill').forEach(function (pill) {
(0, _chai.expect)(pill.find('.slds-pill_bare').length).to.eql(1);
});
});
});
});