optimizely-oui
Version:
Optimizely's Component Library.
106 lines (97 loc) • 3.53 kB
JavaScript
"use strict";
var _react = _interopRequireDefault(require("react"));
var _enzyme = require("enzyme");
var _index = _interopRequireDefault(require("../index"));
var _Token = _interopRequireDefault(require("../../Token"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/* eslint-disable react/prop-types */
var itemsWithoutGroups = [{
id: 1,
type: "item",
text: "Item A"
}, {
id: 2,
type: "item",
text: "Item B"
}, {
id: 3,
type: "item",
text: "Item C"
}, {
id: 4,
type: "item",
text: "Item D"
}, {
id: 5,
type: "item",
text: "Item E"
}];
var renderTokenItem = function renderTokenItem(_ref) {
var item = _ref.item,
index = _ref.index,
snapshot = _ref.snapshot;
return _react["default"].createElement("div", null, _react["default"].createElement(_Token["default"], {
isDraggable: true,
name: item["text"] + "- isDragging? " + snapshot.isDragging,
order: index + 1,
showWell: false
}));
};
var renderTokenItemWithAdjustedDragging = function renderTokenItemWithAdjustedDragging(_ref2) {
var item = _ref2.item,
index = _ref2.index,
snapshot = _ref2.snapshot,
dragHandleProps = _ref2.dragHandleProps;
return _react["default"].createElement("div", null, _react["default"].createElement(_Token["default"], {
isDraggable: true,
name: item["text"] + "- isDragging? " + snapshot.isDragging,
showWell: false,
usesDragHandle: true,
dragHandleProps: dragHandleProps
}));
};
describe("components/DragAndDrop", function () {
it("renders multiple draggable items", function () {
var component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
items: itemsWithoutGroups,
renderItem: renderTokenItem,
idForDroppableRegion: "droppable-test-demo"
}));
expect(component.find("li").length).toBe(5);
expect(component.find(".oui-token").length).toBe(5);
});
it("passes drag handle props into child when needed", function () {
var component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
idForDroppableRegion: "droppable-test-demo",
items: itemsWithoutGroups,
useCustomDragHandle: true,
renderItem: renderTokenItemWithAdjustedDragging
}));
expect(component.find('.oui-token__move[data-rbd-drag-handle-draggable-id="5"]').length).toBe(1);
});
describe("when given a className", function () {
it("appends it to the oui-sortable element", function () {
var component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
className: "extra-class",
items: itemsWithoutGroups,
renderItem: renderTokenItem,
idForDroppableRegion: "droppable-test-demo"
}));
expect(component.find(".oui-sortable").first().prop("className").includes("extra-class")).toBe(true);
});
});
describe("when given an unknown prop", function () {
it("passes it to the oui-sortable element", function () {
// @ts-ignore: `unknownProps` is not part of any typed interface and therefore a good test value.
var component = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
unknownProp: "some value",
items: itemsWithoutGroups,
renderItem: renderTokenItem,
idForDroppableRegion: "droppable-test-demo"
}));
expect(component.find(".oui-sortable").first()).toHaveProp({
unknownProp: "some value"
});
});
});
});