@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
97 lines (84 loc) • 3.1 kB
JavaScript
;
var _react = _interopRequireDefault(require("react"));
var _enzyme = require("enzyme");
var _chai = _interopRequireDefault(require("chai"));
var _iconSettings = _interopRequireDefault(require("../../icon-settings"));
var _link = _interopRequireDefault(require("../../app-launcher/link"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var expect = _chai.default.expect;
var should = _chai.default.should();
describe('SLDS APP LAUNCHER LINK *******************************************', function () {
var div;
var handles = {
link: null
};
var createLink = function createLink(props) {
return _react.default.createElement(_link.default, props);
};
function mountLink(props) {
div = document.createElement('div');
document.body.appendChild(div);
handles.link = (0, _enzyme.mount)(_react.default.createElement(_iconSettings.default, {
iconPath: "/assets/icons"
}, createLink(props)));
}
function cleanDom() {
document.body.removeChild(div);
}
describe('Default App Launcher Link', function () {
var onClick;
beforeEach(function () {
onClick = sinon.spy();
mountLink({
children: 'Accounts',
className: 'this-is-a-custom-class',
href: 'https://www.salesforce.com/',
onClick: onClick,
search: 'ccounts',
title: 'Accounts Title'
});
});
afterEach(function () {
cleanDom();
});
it('renders link', function () {
should.exist(handles.link);
});
it('renders link with proper classes', function () {
should.exist(handles.link.find('a.slds-truncate'));
});
it('renders link with custom classes', function () {
should.exist(handles.link.find('a.this-is-a-custom-class'));
});
it('renders link children', function () {
expect(handles.link.find('span').at(0).text()).to.eql('Accounts');
});
it('renders link title', function () {
expect(handles.link).to.have.attr('title', 'Accounts Title');
});
it('has an href attribute', function () {
expect(handles.link).to.have.attr('href', 'https://www.salesforce.com/');
});
it('clicking link fires callback and ignores href', function () {
handles.link.simulate('click');
expect(onClick.calledOnce).to.be.true; // eslint-disable-line no-unused-expressions
});
it('search string highlights link children', function () {
expect(handles.link.containsAllMatchingElements( // eslint-disable-line no-unused-expressions
[_react.default.createElement("span", null, "A"), _react.default.createElement("mark", null, "ccounts")])).to.be.true;
});
});
describe('App Launcher Link (title prop not provided)', function () {
beforeEach(function () {
mountLink({
children: 'Accounts'
});
});
afterEach(function () {
cleanDom();
});
it('uses children to render title when not provided title prop', function () {
expect(handles.link).to.have.attr('title', 'Accounts');
});
});
});