optimizely-oui
Version:
Optimizely's Component Library.
100 lines (94 loc) • 4.39 kB
JavaScript
;
var _react = _interopRequireDefault(require("react"));
var _index = _interopRequireDefault(require("../index"));
var _Table = _interopRequireDefault(require("../../../Table"));
var _enzyme = require("enzyme");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
describe("components/DiscloseTable/DiscloseRow", function () {
var component;
it("should render rowContents prop correctly", function () {
component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
rowContents: [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Experiment Name")]
}, _react["default"].createElement("p", null, "Content")));
expect(component.find("tr").find("td").exists()).toBe(true);
});
it("should render the arrow inside first `Table.TD `", function () {
component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
rowContents: [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Experiment Name")]
}, _react["default"].createElement("p", null, "Content")));
expect(component.find("tr").find("td").containsMatchingElement(_react["default"].createElement("span", {
className: "oui-disclose__symbol push-half--right"
}))).toBe(true);
});
describe("when in collapsed state", function () {
beforeEach(function () {
component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
rowContents: [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Experiment Name")]
}, _react["default"].createElement("p", null, "Content")));
});
it('should render a single "tr" row', function () {
expect(component.children()).toHaveLength(1);
});
it("should have valid CSS classes applied", function () {
expect(component.find("tr").hasClass("oui-disclose-table--row__toggle")).toBe(true);
expect(component.find("tr").hasClass("is-active")).toBe(false);
});
it("should not render childrenn", function () {
expect(component.find("tr").find("p").exists()).toBe(false);
});
});
describe("when in expanded state", function () {
var rowComponents = [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Experiment Name")];
beforeEach(function () {
component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
rowContents: rowComponents
}, _react["default"].createElement("p", null, "Content")));
component.find("tr").simulate("click");
});
it('should render two "tr" rows', function () {
expect(component.find("tr").length).toBe(2);
});
it("should have valid CSS classes applied", function () {
expect(component.find("tr").first().hasClass("oui-disclose-table--row__toggle")).toBe(true);
expect(component.find("tr").first().hasClass("is-active")).toBe(true);
expect(component.find("tr").last().hasClass("oui-disclose-table--row__content")).toBe(true);
});
it("should render children", function () {
expect(component.find("tr").find("p").exists()).toBe(true);
expect(component.find("tr").last().find("td").prop("colSpan")).toBe(rowComponents.length + 1);
});
});
describe("when given a className", function () {
it("appends it to the root element", function () {
var component = (0, _enzyme.shallow)(_react["default"].createElement(_index["default"], {
className: "extra-class",
rowContents: [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Text")]
}, "Text"));
expect(component.prop("className").includes("extra-class")).toBe(true);
});
});
describe("when given an unknown prop", function () {
it("passes it to the root element", function () {
// @ts-ignore: `unknownProps` is not part of any typed interface and therefore a good test value.
var component = (0, _enzyme.shallow)(_react["default"].createElement(_index["default"], {
unknownProp: "some value",
rowContents: [_react["default"].createElement(_Table["default"].TD, {
key: "foo"
}, "Text")]
}, "Text"));
expect(component).toHaveProp({
unknownProp: "some value"
});
});
});
});