@pie-element/inline-dropdown 8.3.2-tip-tap.2 → 8.3.2-tip-tap.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +124 -0
- package/configure/lib/__tests__/main.test.js +516 -0
- package/configure/lib/__tests__/markupUtils.test.js +108 -0
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/inline-dropdown-toolbar.js +9 -8
- package/configure/lib/main.js +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/response-area.js +1 -1
- package/configure/lib/utils.js +1 -1
- package/configure/package.json +2 -2
- package/controller/lib/__tests__/index.test.js +948 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -1
- package/controller/lib/utils.js +1 -1
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/inline-dropdown.test.js +121 -0
- package/lib/index.js +1 -1
- package/lib/inline-dropdown.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
|
|
7
|
+
var _enzyme = require("enzyme");
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
|
|
11
|
+
var _inlineDropdownToolbar = require("../inline-dropdown-toolbar");
|
|
12
|
+
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
+
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
|
|
17
|
+
describe('Main', function () {
|
|
18
|
+
var onAddChoice = jest.fn();
|
|
19
|
+
var onRemoveChoice = jest.fn();
|
|
20
|
+
var onSelectChoice = jest.fn();
|
|
21
|
+
var onToolbarDone = jest.fn();
|
|
22
|
+
var value = {
|
|
23
|
+
change: jest.fn().mockReturnValue({
|
|
24
|
+
setNodeByKey: jest.fn().mockReturnValue({
|
|
25
|
+
moveFocusTo: jest.fn().mockReturnValue({
|
|
26
|
+
moveAnchorTo: jest.fn()
|
|
27
|
+
})
|
|
28
|
+
})
|
|
29
|
+
}),
|
|
30
|
+
document: {
|
|
31
|
+
getNextText: jest.fn().mockReturnValue({
|
|
32
|
+
key: '1'
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
var wrapper = function wrapper() {
|
|
38
|
+
var defaults = {
|
|
39
|
+
onAddChoice: onAddChoice,
|
|
40
|
+
onRemoveChoice: onRemoveChoice,
|
|
41
|
+
onSelectChoice: onSelectChoice,
|
|
42
|
+
node: {
|
|
43
|
+
key: '1',
|
|
44
|
+
data: {
|
|
45
|
+
toJSON: jest.fn(),
|
|
46
|
+
get: function get(key) {
|
|
47
|
+
if (key === 'index') {
|
|
48
|
+
return '0';
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return 'cow';
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
value: value,
|
|
56
|
+
onToolbarDone: onToolbarDone,
|
|
57
|
+
choices: [{
|
|
58
|
+
label: 'cow ',
|
|
59
|
+
value: '0',
|
|
60
|
+
correct: true
|
|
61
|
+
}, {
|
|
62
|
+
label: 'dog ',
|
|
63
|
+
value: '1',
|
|
64
|
+
correct: false
|
|
65
|
+
}, {
|
|
66
|
+
label: 'cat ',
|
|
67
|
+
value: '2',
|
|
68
|
+
correct: false
|
|
69
|
+
}]
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
var props = _objectSpread({}, defaults);
|
|
73
|
+
|
|
74
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_inlineDropdownToolbar.RespAreaToolbar, props), {
|
|
75
|
+
disableLifecycleMethods: true
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
describe('snapshot', function () {
|
|
80
|
+
it('Renders', function () {
|
|
81
|
+
expect(wrapper()).toMatchSnapshot();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe('logic', function () {
|
|
85
|
+
var w;
|
|
86
|
+
beforeEach(function () {
|
|
87
|
+
w = wrapper();
|
|
88
|
+
});
|
|
89
|
+
describe('onRespAreaChange', function () {
|
|
90
|
+
it('sets state', function () {
|
|
91
|
+
w.instance().onRespAreaChange('<div>test</div>');
|
|
92
|
+
expect(w.instance().state.respAreaMarkup).toEqual('<div>test</div>');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe('onDone', function () {
|
|
96
|
+
it('does not call onAddChoice if choice is empty', function () {
|
|
97
|
+
w.instance().onDone('<div><p></p></div>');
|
|
98
|
+
expect(onAddChoice).not.toBeCalled();
|
|
99
|
+
});
|
|
100
|
+
it('calls onAddChoice if choice not empty', function () {
|
|
101
|
+
w.instance().onDone('<div>test</div>');
|
|
102
|
+
expect(onAddChoice).toBeCalledWith('0', '<div>test</div>', -1);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('onSelectChoice', function () {
|
|
106
|
+
it('calls onToolbarDone and onSelectChoice', function () {
|
|
107
|
+
w.instance().onSelectChoice('cat', '2');
|
|
108
|
+
expect(onToolbarDone).toBeCalled();
|
|
109
|
+
expect(onSelectChoice).toBeCalledWith('2');
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe('onRemoveChoice', function () {
|
|
113
|
+
it('calls onToolbarChange if removed value is the one selected as correct', function () {
|
|
114
|
+
w.instance().onRemoveChoice('cow', '0');
|
|
115
|
+
expect(onToolbarDone).toBeCalled();
|
|
116
|
+
});
|
|
117
|
+
it('calls onRemoveChoice if removed value is not the one selected as correct', function () {
|
|
118
|
+
w.instance().onRemoveChoice('cat', '2');
|
|
119
|
+
expect(onRemoveChoice).toBeCalledWith('2');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5saW5lLWRyb3Bkb3duLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkFkZENob2ljZSIsImplc3QiLCJmbiIsIm9uUmVtb3ZlQ2hvaWNlIiwib25TZWxlY3RDaG9pY2UiLCJvblRvb2xiYXJEb25lIiwidmFsdWUiLCJjaGFuZ2UiLCJtb2NrUmV0dXJuVmFsdWUiLCJzZXROb2RlQnlLZXkiLCJtb3ZlRm9jdXNUbyIsIm1vdmVBbmNob3JUbyIsImRvY3VtZW50IiwiZ2V0TmV4dFRleHQiLCJrZXkiLCJ3cmFwcGVyIiwiZGVmYXVsdHMiLCJub2RlIiwiZGF0YSIsInRvSlNPTiIsImdldCIsImNob2ljZXMiLCJsYWJlbCIsImNvcnJlY3QiLCJwcm9wcyIsImRpc2FibGVMaWZlY3ljbGVNZXRob2RzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiYmVmb3JlRWFjaCIsImluc3RhbmNlIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwicmVzcEFyZWFNYXJrdXAiLCJ0b0VxdWFsIiwib25Eb25lIiwibm90IiwidG9CZUNhbGxlZCIsInRvQmVDYWxsZWRXaXRoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxNQUFELEVBQVMsWUFBTTtBQUNyQixNQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxFQUFsQjtBQUNBLE1BQUlDLGNBQWMsR0FBR0YsSUFBSSxDQUFDQyxFQUFMLEVBQXJCO0FBQ0EsTUFBSUUsY0FBYyxHQUFHSCxJQUFJLENBQUNDLEVBQUwsRUFBckI7QUFDQSxNQUFJRyxhQUFhLEdBQUdKLElBQUksQ0FBQ0MsRUFBTCxFQUFwQjtBQUVBLE1BQU1JLEtBQUssR0FBRztBQUNaQyxJQUFBQSxNQUFNLEVBQUVOLElBQUksQ0FBQ0MsRUFBTCxHQUFVTSxlQUFWLENBQTBCO0FBQ2hDQyxNQUFBQSxZQUFZ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RUFBRCxFQUE2RSxZQUFNO0FBQ25GRyxRQUFBQSxDQUFDLENBQUNFLFFBQUYsR0FBYTVCLGNBQWIsQ0FBNEIsS0FBNUIsRUFBbUMsR0FBbkM7QUFFQXdCLFFBQUFBLE1BQU0sQ0FBQ3hCLGNBQUQsQ0FBTixDQUF1Qm9DLGNBQXZCLENBQXNDLEdBQXRDO0FBQ0QsT0FKQyxDQUFGO0FBS0QsS0FaTyxDQUFSO0FBYUQsR0FuRE8sQ0FBUjtBQW9ERCxDQTFITyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBSZXNwQXJlYVRvb2xiYXIgfSBmcm9tICcuLi9pbmxpbmUtZHJvcGRvd24tdG9vbGJhcic7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgb25BZGRDaG9pY2UgPSBqZXN0LmZuKCk7XG4gIGxldCBvblJlbW92ZUNob2ljZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uU2VsZWN0Q2hvaWNlID0gamVzdC5mbigpO1xuICBsZXQgb25Ub29sYmFyRG9uZSA9IGplc3QuZm4oKTtcblxuICBjb25zdCB2YWx1ZSA9IHtcbiAgICBjaGFuZ2U6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgc2V0Tm9kZUJ5S2V5OiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgbW92ZUZvY3VzVG86IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIG1vdmVBbmNob3JUbzogamVzdC5mbigpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIGRvY3VtZW50OiB7XG4gICAgICBnZXROZXh0VGV4dDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgIGtleTogJzEnLFxuICAgICAgfSksXG4gICAgfSxcbiAgfTtcblxuICBjb25zdCB3cmFwcGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgb25BZGRDaG9pY2UsXG4gICAgICBvblJlbW92ZUNob2ljZSxcbiAgICAgIG9uU2VsZWN0Q2hvaWNlLFxuICAgICAgbm9kZToge1xuICAgICAgICBrZXk6ICcxJyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRvSlNPTjogamVzdC5mbigpLFxuICAgICAgICAgIGdldDogKGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2luZGV4Jykge1xuICAgICAgICAgICAgICByZXR1cm4gJzAnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gJ2Nvdyc7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZSxcbiAgICAgIG9uVG9vbGJhckRvbmUsXG4gICAgICBjaG9pY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogJ2NvdyAnLFxuICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnZG9nICcsXG4gICAgICAgICAgdmFsdWU6ICcxJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnY2F0ICcsXG4gICAgICAgICAgdmFsdWU6ICcyJyxcbiAgICAgICAgICBjb3JyZWN0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxSZXNwQXJlYVRvb2xiYXIgey4uLnByb3BzfSAvPiwgeyBkaXNhYmxlTGlmZWN5Y2xlTWV0aG9kczogdHJ1ZSB9KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ1JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGxldCB3O1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uUmVzcEFyZWFDaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgnc2V0cyBzdGF0ZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVzcEFyZWFDaGFuZ2UoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUucmVzcEFyZWFNYXJrdXApLnRvRXF1YWwoJzxkaXY+dGVzdDwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Eb25lJywgKCkgPT4ge1xuICAgICAgaXQoJ2RvZXMgbm90IGNhbGwgb25BZGRDaG9pY2UgaWYgY2hvaWNlIGlzIGVtcHR5JywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Eb25lKCc8ZGl2PjxwPjwvcD48L2Rpdj4nKTtcblxuICAgICAgICBleHBlY3Qob25BZGRDaG9pY2UpLm5vdC50b0JlQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIG9uQWRkQ2hvaWNlIGlmIGNob2ljZSBub3QgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkRvbmUoJzxkaXY+dGVzdDwvZGl2PicpO1xuXG4gICAgICAgIGV4cGVjdChvbkFkZENob2ljZSkudG9CZUNhbGxlZFdpdGgoJzAnLCAnPGRpdj50ZXN0PC9kaXY+JywgLTEpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICBpdCgnY2FsbHMgb25Ub29sYmFyRG9uZSBhbmQgb25TZWxlY3RDaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblNlbGVjdENob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgICBleHBlY3Qob25TZWxlY3RDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblRvb2xiYXJDaGFuZ2UgaWYgcmVtb3ZlZCB2YWx1ZSBpcyB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY293JywgJzAnKTtcblxuICAgICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBvblJlbW92ZUNob2ljZSBpZiByZW1vdmVkIHZhbHVlIGlzIG5vdCB0aGUgb25lIHNlbGVjdGVkIGFzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblJlbW92ZUNob2ljZSgnY2F0JywgJzInKTtcblxuICAgICAgICBleHBlY3Qob25SZW1vdmVDaG9pY2UpLnRvQmVDYWxsZWRXaXRoKCcyJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|