office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
85 lines (83 loc) • 3.89 kB
JavaScript
define(["require", "exports", 'react', 'react-dom', 'react-addons-test-utils', './focus'], function (require, exports, React, ReactDOM, ReactTestUtils, focus_1) {
"use strict";
var expect = chai.expect;
var _hiddenElement;
var _visibleElement;
var _element;
function renderIntoDocument(element) {
var component = ReactTestUtils.renderIntoDocument(element);
var renderedDOM = ReactDOM.findDOMNode(component);
return renderedDOM;
}
function _initialize() {
_hiddenElement = renderIntoDocument(React.createElement("div", {"data-is-visible": false},
React.createElement("button", null)
));
_visibleElement = renderIntoDocument(React.createElement("div", {"data-is-visible": true},
React.createElement("button", null)
));
_element = renderIntoDocument(React.createElement("div", null,
React.createElement("button", null)
));
_element.isVisible = true;
}
describe('isElementVisible', function () {
beforeEach(function () { return _initialize(); });
it('returns false if data-is-visible is false', function () {
expect(focus_1.isElementVisible(_hiddenElement)).equals(false, 'Element is not visible');
});
it('returns true if data-is-visible is true', function () {
expect(focus_1.isElementVisible(_visibleElement)).equals(true, 'Element is visible');
});
it('returns true if data-is-visible is undefined but element is visible', function () {
expect(focus_1.isElementVisible(_element)).equals(true, 'Element is visible but data-is-visible is undefined');
});
});
describe('isElementTabbable', function () {
it('returns false on null', function () {
expect(focus_1.isElementVisible(null)).is.false;
});
it('returns false on normal divs', function () {
var div = document.createElement('div');
expect(focus_1.isElementTabbable(div)).is.false;
});
it('returns false on disabled buttons', function () {
var button = document.createElement('button');
button.setAttribute('disabled', 'true');
expect(focus_1.isElementTabbable(button)).is.false;
});
it('returns true on buttons', function () {
var button = document.createElement('button');
expect(focus_1.isElementTabbable(button)).is.true;
});
it('returns true on anchors', function () {
var anchor = document.createElement('a');
expect(focus_1.isElementTabbable(anchor)).is.true;
});
it('returns true on input elements', function () {
var input = document.createElement('input');
expect(focus_1.isElementTabbable(input)).is.true;
});
it('returns true on textarea elements', function () {
var textarea = document.createElement('textarea');
expect(focus_1.isElementTabbable(textarea)).is.true;
});
it('works with tabbable divs', function () {
var div = document.createElement('div');
div.tabIndex = 0;
expect(focus_1.isElementTabbable(div)).is.true;
});
it('returns true with role=button divs', function () {
var div = document.createElement('div');
div.setAttribute('role', 'button');
expect(focus_1.isElementTabbable(div)).is.true;
});
it('returns false with role=button disabled buttons', function () {
var button = document.createElement('button');
button.setAttribute('role', 'button');
button.setAttribute('disabled', 'true');
expect(focus_1.isElementTabbable(button)).is.false;
});
});
});
//# sourceMappingURL=focus.test.js.map