@reltio/components 1.4.1905 → 1.4.1907

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.
Files changed (105) hide show
  1. package/cjs/ActionsPanel/ActionsPanel.test.js +133 -49
  2. package/cjs/AttributeListItem/AttributeListItem.spec.js +147 -118
  3. package/cjs/AttributeSelector/AttributeSelector.specs.js +125 -193
  4. package/cjs/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  5. package/cjs/AttributesErrorsPanel/components/Error/Error.specs.js +96 -90
  6. package/cjs/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  7. package/cjs/AttributesErrorsPanel/store.test-data.js +29 -0
  8. package/cjs/AttributesFilterSelector/AttributesFilterSelector.test.js +127 -105
  9. package/cjs/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  10. package/cjs/AttributesValuesEditor/AttributesValuesEditor.test.js +92 -88
  11. package/cjs/AttributesView/AttributesView.test.js +67 -34
  12. package/cjs/AutoSizeList/AutoSizeList.test.js +81 -59
  13. package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +15 -31
  14. package/cjs/BarChart/BarChart.test.js +128 -65
  15. package/cjs/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  16. package/cjs/BasicViewContent/BasicViewContent.test.js +7 -9
  17. package/cjs/BlobRenderer/BlobRenderer.test.js +28 -9
  18. package/cjs/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  19. package/cjs/BubbleChart/BubbleChart.test.js +111 -87
  20. package/cjs/CloudChart/CloudChart.test.js +95 -36
  21. package/cjs/CollaborationItem/CollaborationItem.test.js +67 -30
  22. package/cjs/CollaborationItem/components/Comment/Comment.test.js +221 -189
  23. package/cjs/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -81
  24. package/cjs/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  25. package/cjs/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  26. package/cjs/CollapseButton/CollapseButton.test.js +74 -15
  27. package/cjs/CollapseRowButton/CollapseRowButton.test.js +82 -24
  28. package/cjs/ColorBar/ColorBar.test.js +13 -15
  29. package/cjs/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  30. package/cjs/CommentsContainer/CommentsContainer.test.js +282 -211
  31. package/cjs/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +183 -122
  32. package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  33. package/cjs/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  34. package/cjs/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  35. package/cjs/ConnectionEditor/ConnectionEditor.test.js +299 -282
  36. package/cjs/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.d.ts +3 -1
  37. package/cjs/ReactSortableTree/ReactSortableTree.js +2 -7
  38. package/cjs/RelationTypeSelector/RelationTypeSelector.d.ts +3 -1
  39. package/cjs/types/index.d.ts +1 -1
  40. package/esm/ActionsPanel/ActionsPanel.test.js +133 -49
  41. package/esm/AttributeListItem/AttributeListItem.spec.js +149 -97
  42. package/esm/AttributeSelector/AttributeSelector.specs.js +125 -193
  43. package/esm/AttributesErrorsPanel/AttributesErrorsPanel.specs.js +128 -71
  44. package/esm/AttributesErrorsPanel/components/Error/Error.specs.js +98 -72
  45. package/esm/AttributesErrorsPanel/store.test-data.d.ts +22 -0
  46. package/esm/AttributesErrorsPanel/store.test-data.js +26 -0
  47. package/esm/AttributesFilterSelector/AttributesFilterSelector.test.js +129 -84
  48. package/esm/AttributesFiltersButton/AttributesFiltersButton.test.js +218 -136
  49. package/esm/AttributesValuesEditor/AttributesValuesEditor.test.js +94 -67
  50. package/esm/AttributesView/AttributesView.test.js +67 -34
  51. package/esm/AutoSizeList/AutoSizeList.test.js +81 -59
  52. package/esm/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.js → AvatarWithFallback/AvatarWithFallback.test.js} +16 -32
  53. package/esm/BarChart/BarChart.test.js +128 -65
  54. package/esm/BasicAttributeSelector/BasicAttributeSelector.spec.js +27 -10
  55. package/esm/BasicViewContent/BasicViewContent.test.js +7 -9
  56. package/esm/BlobRenderer/BlobRenderer.test.js +28 -9
  57. package/esm/BooleanRadioEditor/BooleanRadioEditor.test.js +89 -35
  58. package/esm/BubbleChart/BubbleChart.test.js +111 -87
  59. package/esm/CloudChart/CloudChart.test.js +95 -36
  60. package/esm/CollaborationItem/CollaborationItem.test.js +67 -30
  61. package/esm/CollaborationItem/components/Comment/Comment.test.js +221 -189
  62. package/esm/CollaborationItem/components/CommentContent/CommentContent.test.js +46 -58
  63. package/esm/CollaborationItem/components/RepliedComment/RepliedComment.test.js +194 -163
  64. package/esm/CollaborationItem/components/SendMessageArea/SendMessageArea.test.js +307 -266
  65. package/esm/CollapseButton/CollapseButton.test.js +74 -15
  66. package/esm/CollapseRowButton/CollapseRowButton.test.js +82 -24
  67. package/esm/ColorBar/ColorBar.test.js +13 -15
  68. package/esm/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.spec.js +207 -129
  69. package/esm/CommentsContainer/CommentsContainer.test.js +282 -211
  70. package/esm/CommentsContainer/components/CollaborationPopup/CollaborationPopup.test.js +182 -101
  71. package/esm/ConfigureColumnsPopup/ConfigureColumnsPopup.test.js +42 -41
  72. package/esm/ConfirmDeleteDialog/ConfirmDeleteDialog.test.js +77 -28
  73. package/esm/ConfirmationDialog/ConfirmationDialog.test.js +85 -48
  74. package/esm/ConnectionEditor/ConnectionEditor.test.js +300 -283
  75. package/esm/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.d.ts +3 -1
  76. package/esm/ReactSortableTree/ReactSortableTree.js +2 -7
  77. package/esm/RelationTypeSelector/RelationTypeSelector.d.ts +3 -1
  78. package/esm/types/index.d.ts +1 -1
  79. package/package.json +2 -2
  80. package/cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -100
  81. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  82. package/cjs/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -46
  83. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  84. package/cjs/AvatarWithFallback/AvatarWithFallback.specs.js +0 -27
  85. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  86. package/cjs/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -27
  87. package/cjs/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  88. package/cjs/CollaborationItem/components/Avatar/Avatar.test.js +0 -15
  89. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  90. package/cjs/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -80
  91. package/esm/ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts +0 -1
  92. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts +0 -1
  93. package/esm/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.js +0 -95
  94. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.d.ts +0 -1
  95. package/esm/AttributesFiltersButton/components/ActionButtons/ActionButtons.test.js +0 -41
  96. package/esm/AvatarWithFallback/AvatarWithFallback.specs.d.ts +0 -1
  97. package/esm/AvatarWithFallback/AvatarWithFallback.specs.js +0 -22
  98. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.d.ts +0 -1
  99. package/esm/BooleanRadioEditor/components/BooleanEditor/BooleanEditor.test.js +0 -22
  100. package/esm/CollaborationItem/components/Avatar/Avatar.test.d.ts +0 -1
  101. package/esm/CollaborationItem/components/Avatar/Avatar.test.js +0 -10
  102. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.d.ts +0 -1
  103. package/esm/CollaborationItem/components/TextFieldWithMentions/TextFieldWithMentions.test.js +0 -55
  104. /package/cjs/{ActionsPanel/components/MenuItemRenderer/MenuItemRenderer.spec.d.ts → AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
  105. /package/{cjs/AttributesErrorsPanel/components/ErrorsPanel/ErrorsPanel.specs.d.ts → esm/AvatarWithFallback/AvatarWithFallback.test.d.ts} +0 -0
@@ -15,47 +15,80 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  var react_1 = __importDefault(require("react"));
18
- var enzyme_1 = require("enzyme");
19
18
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
20
19
  var AttributesView_1 = require("./AttributesView");
21
- var ReadOnlyAttributesView_1 = require("../ReadOnlyAttributesView");
22
- var EditModeAttributesView_1 = require("../EditModeAttributesView");
23
- var EntityContext_1 = require("../contexts/EntityContext");
24
20
  var MdmModuleContext_1 = require("../contexts/MdmModuleContext");
25
- jest.mock('../ReadOnlyAttributesView', function () { return ({
26
- ReadOnlyAttributesView: function () { return null; }
27
- }); });
28
- jest.mock('../EditModeAttributesView', function () { return ({
29
- EditModeAttributesView: function () { return null; }
30
- }); });
31
- jest.mock('../contexts/EntityContext', function () { return ({
32
- EntityContext: { Provider: function (_a) {
33
- var children = _a.children;
34
- return children;
35
- } }
36
- }); });
37
- var setUp = function (props) {
38
- return (0, enzyme_1.mount)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: { entityWithDiff: undefined, mode: undefined } },
39
- react_1.default.createElement(AttributesView_1.AttributesView, __assign({}, props))));
40
- };
21
+ var react_2 = require("@testing-library/react");
41
22
  describe('AttributesView tests', function () {
23
+ var entity = {
24
+ type: 'configuration/entityTypes/HCP',
25
+ uri: 'entities/02ZRRE9',
26
+ attributes: {
27
+ FirstName: [
28
+ {
29
+ type: 'configuration/entityTypes/HCP/attributes/FirstName',
30
+ ov: true,
31
+ value: 'nameValue',
32
+ uri: 'entities/02ZRRE9/attributes/FirstName/15p60Tel'
33
+ }
34
+ ]
35
+ }
36
+ };
37
+ var metadata = {
38
+ entityTypes: [
39
+ {
40
+ uri: 'configuration/entityTypes/HCP',
41
+ attributes: [
42
+ {
43
+ uri: 'configuration/entityTypes/HCP/attributes/FirstName',
44
+ type: 'String',
45
+ name: 'FirstName',
46
+ label: 'First Name',
47
+ access: ['READ', 'CREATE', 'UPDATE', 'INITIATE_CHANGE_REQUEST']
48
+ }
49
+ ]
50
+ }
51
+ ]
52
+ };
53
+ var actions = {
54
+ removeAttribute: function () { }
55
+ };
56
+ var mdmDefaultValues = {
57
+ metadata: metadata,
58
+ modifiedEntities: { 'entities/02ZRRE9': entity },
59
+ dependentLookups: { editors: {}, structure: {}, initedTypeUris: [] }
60
+ };
61
+ var setUp = function (props, mdmValues) {
62
+ if (props === void 0) { props = {}; }
63
+ if (mdmValues === void 0) { mdmValues = mdmDefaultValues; }
64
+ var Providers = function (_a) {
65
+ var children = _a.children;
66
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: actions }, children));
67
+ };
68
+ return (0, react_2.render)(react_1.default.createElement(AttributesView_1.AttributesView, __assign({}, props)), { wrapper: Providers });
69
+ };
42
70
  it('should render ReadOnlyAttributesView in read mode if mode is "viewing"', function () {
43
- var component = setUp({ mode: mdm_sdk_1.Mode.Viewing });
44
- expect(component.find(ReadOnlyAttributesView_1.ReadOnlyAttributesView).length).toBe(1);
71
+ setUp({ mode: mdm_sdk_1.Mode.Viewing, entity: entity });
72
+ expect(react_2.screen.getByText('nameValue')).toBeInTheDocument();
73
+ });
74
+ it('should render ReadOnlyAttributesView in read mode if mode is "viewing" in context', function () {
75
+ setUp({ entity: entity }, __assign(__assign({}, mdmDefaultValues), { mode: mdm_sdk_1.Mode.Viewing }));
76
+ expect(react_2.screen.getByText('nameValue')).toBeInTheDocument();
77
+ });
78
+ it('should render EditModeAttributesView in read mode if mode is "editing"', function () {
79
+ setUp({ mode: mdm_sdk_1.Mode.Editing, entity: entity });
80
+ expect(react_2.screen.getByRole('textbox')).toHaveValue('nameValue');
45
81
  });
46
- it('should render EditModeAttributesView in edit mode if mode is "editing"', function () {
47
- var component = setUp({ mode: mdm_sdk_1.Mode.Editing });
48
- expect(component.find(EditModeAttributesView_1.EditModeAttributesView).length).toBe(1);
82
+ it('should render EditModeAttributesView in read mode if mode is "editing" in context', function () {
83
+ setUp({ entity: entity }, __assign(__assign({}, mdmDefaultValues), { mode: mdm_sdk_1.Mode.Editing }));
84
+ expect(react_2.screen.getByRole('textbox')).toHaveValue('nameValue');
49
85
  });
50
- it('should render EditModeAttributesView in edit mode id mode is "suggesting"', function () {
51
- var component = setUp({ mode: mdm_sdk_1.Mode.Editing });
52
- expect(component.find(EditModeAttributesView_1.EditModeAttributesView).length).toBe(1);
86
+ it('should render EditModeAttributesView in read mode if mode is "suggesting"', function () {
87
+ setUp({ mode: mdm_sdk_1.Mode.Suggesting, entity: entity });
88
+ expect(react_2.screen.getByRole('textbox')).toHaveValue('nameValue');
53
89
  });
54
- it('should provide AttributesView with context', function () {
55
- var entity = { uri: 'uri1' };
56
- var component = setUp({ mode: mdm_sdk_1.Mode.Viewing, entity: entity });
57
- var contextProvider = component.find(EntityContext_1.EntityContext.Provider);
58
- expect(contextProvider.prop('value')).toBe(entity);
59
- expect(contextProvider.childAt(0)).toEqual(component.find(ReadOnlyAttributesView_1.ReadOnlyAttributesView));
90
+ it('should render EditModeAttributesView in read mode if mode is "suggesting" in context', function () {
91
+ setUp({ entity: entity }, __assign(__assign({}, mdmDefaultValues), { mode: mdm_sdk_1.Mode.Suggesting }));
92
+ expect(react_2.screen.getByRole('textbox')).toHaveValue('nameValue');
60
93
  });
61
94
  });
@@ -10,15 +10,50 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
13
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
51
  };
16
52
  Object.defineProperty(exports, "__esModule", { value: true });
17
53
  var react_1 = __importDefault(require("react"));
18
- var enzyme_1 = require("enzyme");
19
54
  var AutoSizeList_1 = __importDefault(require("./AutoSizeList"));
20
- var react_window_1 = require("react-window");
21
55
  var test_utils_1 = require("../test-utils");
56
+ var react_2 = require("@testing-library/react");
22
57
  jest.mock('resize-observer-polyfill', function () { return ({
23
58
  __esModule: true,
24
59
  default: jest.fn().mockImplementation(function (onResize) {
@@ -31,74 +66,61 @@ jest.mock('resize-observer-polyfill', function () { return ({
31
66
  })
32
67
  }); });
33
68
  describe('AutoSizeList tests', function () {
34
- var props = {
69
+ var defaultProps = {
35
70
  width: 100,
36
71
  height: 100,
37
72
  data: [1, 2, 3],
38
73
  defaultItemSize: 50,
39
- children: function () { return null; }
74
+ children: function (_a) {
75
+ var data = _a.data, index = _a.index;
76
+ return "child-".concat(data[index]);
77
+ }
40
78
  };
41
- it('should render correctly', function () {
42
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(AutoSizeList_1.default, __assign({}, props)));
43
- var itemCount = props.data.length;
44
- var list = wrapper.find(react_window_1.VariableSizeList);
45
- expect(list.props()).toMatchObject({
46
- width: props.width,
47
- height: props.height,
48
- itemCount: itemCount,
49
- itemData: props.data
50
- });
51
- var listItems = list.find('.item');
52
- expect(listItems).toHaveLength(itemCount);
53
- listItems.forEach(function (item) {
54
- expect(item.childAt(0).prop('style')).toEqual({
55
- visibility: 'hidden'
56
- });
57
- });
58
- return (0, test_utils_1.delayPromise)()
59
- .then(function () { return (0, test_utils_1.delayPromise)(100); })
60
- .then(function () {
61
- wrapper.update();
62
- listItems = wrapper.find(react_window_1.VariableSizeList).find('.item');
63
- expect(listItems).toHaveLength(itemCount);
64
- listItems.forEach(function (item) {
65
- expect(item.childAt(0).prop('style')).toEqual({
66
- visibility: undefined
67
- });
68
- });
69
- });
70
- });
71
- it('should not add style.visibility to items if props.showNotMeasuredItems is true', function () {
72
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(AutoSizeList_1.default, __assign({}, props, { showNotMeasuredItems: true })));
73
- var itemCount = props.data.length;
74
- var list = wrapper.find(react_window_1.VariableSizeList);
75
- expect(list.props()).toMatchObject({
76
- width: props.width,
77
- height: props.height,
78
- itemCount: itemCount,
79
- itemData: props.data
80
- });
81
- var listItems = list.find('.item');
82
- expect(listItems).toHaveLength(itemCount);
83
- listItems.forEach(function (item) {
84
- expect(item.childAt(0).prop('style')).toBeUndefined();
79
+ var setUp = function (props) {
80
+ if (props === void 0) { props = defaultProps; }
81
+ return (0, react_2.render)(react_1.default.createElement(AutoSizeList_1.default, __assign({}, props)));
82
+ };
83
+ it('should render correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0:
87
+ setUp();
88
+ expect(react_2.screen.getByText('child-1')).toHaveStyle({ visibility: 'hidden' });
89
+ expect(react_2.screen.getByText('child-2')).toHaveStyle({ visibility: 'hidden' });
90
+ expect(react_2.screen.getByText('child-3')).toHaveStyle({ visibility: 'hidden' });
91
+ return [4 /*yield*/, (0, test_utils_1.delayPromise)(100)];
92
+ case 1:
93
+ _a.sent();
94
+ expect(react_2.screen.getByText('child-1')).toHaveStyle({ visibility: 'visible' });
95
+ expect(react_2.screen.getByText('child-2')).toHaveStyle({ visibility: 'visible' });
96
+ expect(react_2.screen.getByText('child-3')).toHaveStyle({ visibility: 'visible' });
97
+ return [2 /*return*/];
98
+ }
85
99
  });
86
- return (0, test_utils_1.delayPromise)()
87
- .then(function () { return (0, test_utils_1.delayPromise)(); })
88
- .then(function () {
89
- wrapper.update();
90
- listItems = wrapper.find(react_window_1.VariableSizeList).find('.item');
91
- expect(listItems).toHaveLength(itemCount);
92
- listItems.forEach(function (item) {
93
- expect(item.childAt(0).prop('style')).toBeUndefined();
94
- });
100
+ }); });
101
+ it('should not add style.visibility to items if props.showNotMeasuredItems is true', function () { return __awaiter(void 0, void 0, void 0, function () {
102
+ return __generator(this, function (_a) {
103
+ switch (_a.label) {
104
+ case 0:
105
+ setUp(__assign(__assign({}, defaultProps), { showNotMeasuredItems: true }));
106
+ expect(react_2.screen.getByText('child-1')).not.toHaveAttribute('visibility');
107
+ expect(react_2.screen.getByText('child-2')).not.toHaveAttribute('visibility');
108
+ expect(react_2.screen.getByText('child-3')).not.toHaveAttribute('visibility');
109
+ return [4 /*yield*/, (0, test_utils_1.delayPromise)(100)];
110
+ case 1:
111
+ _a.sent();
112
+ expect(react_2.screen.getByText('child-1')).not.toHaveAttribute('visibility');
113
+ expect(react_2.screen.getByText('child-2')).not.toHaveAttribute('visibility');
114
+ expect(react_2.screen.getByText('child-3')).not.toHaveAttribute('visibility');
115
+ return [2 /*return*/];
116
+ }
95
117
  });
96
- });
118
+ }); });
97
119
  it('should support props.listRef', function () {
98
120
  var listRef = {
99
121
  current: undefined
100
122
  };
101
- (0, enzyme_1.mount)(react_1.default.createElement(AutoSizeList_1.default, __assign({}, props, { listRef: listRef })));
123
+ setUp(__assign(__assign({}, defaultProps), { listRef: listRef }));
102
124
  expect(listRef.current.scrollTo).toBeDefined();
103
125
  });
104
126
  });
@@ -40,39 +40,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  var react_1 = __importDefault(require("react"));
43
+ var AvatarWithFallback_1 = require("./AvatarWithFallback");
43
44
  var react_2 = require("@testing-library/react");
44
- var user_event_1 = __importDefault(require("@testing-library/user-event"));
45
- var MenuItemRenderer_1 = require("./MenuItemRenderer");
46
- describe('MenuItemRenderer tests', function () {
47
- var ActionButton = function (_a) {
48
- var mode = _a.mode, onMenuClose = _a.onMenuClose, testProp = _a.testProp;
49
- return react_1.default.createElement("div", { "data-reltio-id": "action-button", "data-mode": mode, "data-test": testProp, onClick: onMenuClose });
50
- };
51
- var item = {
52
- ActionButton: ActionButton,
53
- show: true,
54
- testProp: 'testProp'
55
- };
56
- it('should render main parts', function () {
57
- (0, react_2.render)(react_1.default.createElement(MenuItemRenderer_1.MenuItemRenderer, { item: item }));
58
- var button = react_2.screen.getByTestId('action-button');
59
- expect(button).toBeInTheDocument();
60
- expect(button).toHaveAttribute('data-mode', 'menuItem');
61
- expect(button).toHaveAttribute('data-test', 'testProp');
62
- });
63
- it('should call onMenuClose on button click', function () { return __awaiter(void 0, void 0, void 0, function () {
64
- var onMenuClose;
45
+ describe('Avatar with fallback suite', function () {
46
+ it('should show icon if icon url is provided', function () { return __awaiter(void 0, void 0, void 0, function () {
65
47
  return __generator(this, function (_a) {
66
- switch (_a.label) {
67
- case 0:
68
- onMenuClose = jest.fn();
69
- (0, react_2.render)(react_1.default.createElement(MenuItemRenderer_1.MenuItemRenderer, { item: item, onMenuClose: onMenuClose }));
70
- return [4 /*yield*/, user_event_1.default.click(react_2.screen.getByTestId('action-button'))];
71
- case 1:
72
- _a.sent();
73
- expect(onMenuClose).toHaveBeenCalled();
74
- return [2 /*return*/];
75
- }
48
+ (0, react_2.render)(react_1.default.createElement(AvatarWithFallback_1.AvatarWithFallback, { icon: "icon" }));
49
+ expect(react_2.screen.getByRole('img')).toHaveAttribute('src', 'icon');
50
+ return [2 /*return*/];
76
51
  });
77
52
  }); });
53
+ it('should show text if icon url is not provided', function () {
54
+ (0, react_2.render)(react_1.default.createElement(AvatarWithFallback_1.AvatarWithFallback, { avatarText: "text" }));
55
+ expect(react_2.screen.getByText('text')).toBeInTheDocument();
56
+ });
57
+ it('should show text if error has happened', function () {
58
+ (0, react_2.render)(react_1.default.createElement(AvatarWithFallback_1.AvatarWithFallback, { icon: "icon", avatarText: "text" }));
59
+ react_2.fireEvent.error(react_2.screen.getByRole('img'));
60
+ expect(react_2.screen.getByText('text')).toBeInTheDocument();
61
+ });
78
62
  });
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -35,88 +46,140 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
47
  }
37
48
  };
49
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ };
38
58
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
59
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
60
  };
41
61
  Object.defineProperty(exports, "__esModule", { value: true });
42
62
  var react_1 = __importDefault(require("react"));
43
- var enzyme_1 = require("enzyme");
44
- var recharts_1 = require("recharts");
45
63
  var BarChart_1 = require("./BarChart");
64
+ var react_2 = require("@testing-library/react");
65
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
46
66
  describe('BarChart', function () {
47
- var data = [
48
- { label: 'first', value: 1, group: '1' },
49
- { label: 'second', value: 2, group: '2' },
50
- { label: 'third', value: 3, group: '3' }
51
- ];
52
- var defaultBarColor = '#0072CE';
53
- var horizontalBarColor = '#9FC3FF';
67
+ var defaultProps = {
68
+ data: [
69
+ { label: 'first', value: 10, group: '1' },
70
+ { label: 'second', value: 20, group: '2' },
71
+ { label: 'third', value: 30, group: '3' }
72
+ ],
73
+ width: 100,
74
+ height: 200
75
+ };
76
+ var setUp = function (props) {
77
+ if (props === void 0) { props = defaultProps; }
78
+ var user = user_event_1.default.setup();
79
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(BarChart_1.BarChart, __assign({}, props))));
80
+ };
54
81
  it('should render BarChartWidget', function () { return __awaiter(void 0, void 0, void 0, function () {
55
- var wrapper, barChart, bar, xAxis;
82
+ var container, chart, cartesianGrid, cartesianGridLines, xAxis, xAxisLine, xAxisTicks, yAxis, yAxisLine, yAxisTicks, barRectangles;
56
83
  return __generator(this, function (_a) {
57
- wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data }));
58
- barChart = wrapper.find(recharts_1.BarChart);
59
- bar = wrapper.find(recharts_1.Bar);
60
- xAxis = wrapper.find(recharts_1.XAxis);
61
- expect(barChart).toHaveLength(1);
62
- expect(wrapper.find(recharts_1.CartesianGrid)).toHaveLength(1);
63
- expect(wrapper.find(recharts_1.Tooltip)).toHaveLength(1);
64
- expect(bar).toHaveLength(1);
65
- expect(xAxis).toHaveLength(1);
66
- expect(wrapper.find(recharts_1.YAxis)).toHaveLength(1);
67
- expect(barChart.prop('layout')).toBe('horizontal');
68
- expect(bar.prop('fill')).toBe(defaultBarColor);
69
- expect(xAxis.prop('angle')).toBe(0);
70
- expect(xAxis.prop('textAnchor')).toBe('middle');
84
+ container = setUp().container;
85
+ chart = container.querySelector('.recharts-surface');
86
+ expect(chart).toHaveAttribute('width', "".concat(defaultProps.width));
87
+ expect(chart).toHaveAttribute('height', "".concat(defaultProps.height));
88
+ expect(container.querySelector('.recharts-cartesian-grid-vertical')).toBeInTheDocument();
89
+ expect(container.querySelector('.recharts-cartesian-grid-horizontal')).toBeInTheDocument();
90
+ expect(container.querySelector('.recharts-tooltip-wrapper')).toBeInTheDocument();
91
+ cartesianGrid = container.querySelector('.recharts-cartesian-grid');
92
+ cartesianGridLines = cartesianGrid.querySelectorAll('line');
93
+ expect(cartesianGrid).toBeInTheDocument();
94
+ expect(cartesianGridLines).toHaveLength(13);
95
+ cartesianGridLines.forEach(function (line) {
96
+ expect(line).toHaveAttribute('stroke', '#666');
97
+ expect(line).toHaveAttribute('stroke-dasharray', '3 3');
98
+ expect(line).toHaveAttribute('stroke-opacity', '0.4');
99
+ });
100
+ xAxis = container.querySelector('.recharts-xAxis');
101
+ xAxisLine = xAxis.querySelector('.recharts-cartesian-axis-line');
102
+ xAxisTicks = xAxis.querySelectorAll('.recharts-cartesian-axis-tick');
103
+ expect(xAxis).toBeInTheDocument();
104
+ expect(xAxisLine).toBeInTheDocument();
105
+ expect(xAxisLine).toHaveAttribute('text-anchor', 'middle');
106
+ expect(xAxisLine).toHaveAttribute('angle', '0');
107
+ expect(xAxisTicks).toHaveLength(3);
108
+ xAxisTicks.forEach(function (xAxisTick, index) {
109
+ (0, react_2.within)(xAxisTick).getByText(defaultProps.data[index].label);
110
+ });
111
+ yAxis = container.querySelector('.recharts-yAxis');
112
+ yAxisLine = yAxis.querySelector('.recharts-cartesian-axis-line');
113
+ yAxisTicks = yAxis.querySelectorAll('.recharts-cartesian-axis-tick');
114
+ expect(yAxis).toBeInTheDocument();
115
+ expect(yAxisLine).toBeInTheDocument();
116
+ expect(yAxisTicks).toHaveLength(8);
117
+ (0, react_2.within)(yAxisTicks[0]).getByText('0');
118
+ (0, react_2.within)(yAxisTicks[1]).getByText('5');
119
+ (0, react_2.within)(yAxisTicks[2]).getByText('10');
120
+ (0, react_2.within)(yAxisTicks[3]).getByText('15');
121
+ (0, react_2.within)(yAxisTicks[4]).getByText('20');
122
+ (0, react_2.within)(yAxisTicks[5]).getByText('25');
123
+ (0, react_2.within)(yAxisTicks[6]).getByText('30');
124
+ (0, react_2.within)(yAxisTicks[7]).getByText('35');
125
+ barRectangles = container.querySelectorAll('.recharts-bar-rectangle');
126
+ expect(barRectangles).toHaveLength(defaultProps.data.length);
71
127
  return [2 /*return*/];
72
128
  });
73
129
  }); });
74
130
  it('should render horizontal BarChartWidget', function () {
75
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data, options: { isHorizontal: true } }));
76
- var barChart = wrapper.find(recharts_1.BarChart);
77
- var bar = wrapper.find(recharts_1.Bar);
78
- var xAxis = wrapper.find(recharts_1.XAxis);
79
- expect(barChart).toHaveLength(1);
80
- expect(wrapper.find(recharts_1.CartesianGrid)).toHaveLength(1);
81
- expect(wrapper.find(recharts_1.Tooltip)).toHaveLength(1);
82
- expect(bar).toHaveLength(1);
83
- expect(xAxis).toHaveLength(1);
84
- expect(wrapper.find(recharts_1.YAxis)).toHaveLength(1);
85
- expect(barChart.prop('layout')).toBe('vertical');
86
- expect(bar.prop('fill')).toBe(horizontalBarColor);
87
- expect(xAxis.prop('angle')).toBe(0);
88
- expect(xAxis.prop('textAnchor')).toBe('middle');
131
+ var container = setUp(__assign(__assign({}, defaultProps), { options: {
132
+ isHorizontal: true
133
+ } })).container;
134
+ expect(container.querySelector('.recharts-cartesian-grid-vertical')).not.toBeInTheDocument();
135
+ expect(container.querySelector('.recharts-cartesian-grid-horizontal')).toBeInTheDocument();
89
136
  });
90
137
  it('should render BarChartWidget with rotated XAxis labels', function () {
91
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data, options: { isLabelRotated: true } }));
92
- var xAxis = wrapper.find(recharts_1.XAxis);
93
- expect(xAxis.prop('angle')).toBe(-45);
94
- expect(xAxis.prop('textAnchor')).toBe('end');
138
+ var container = setUp(__assign(__assign({}, defaultProps), { options: {
139
+ isLabelRotated: true
140
+ } })).container;
141
+ var xAxis = container.querySelector('.recharts-xAxis');
142
+ var xAxisLine = xAxis.querySelector('.recharts-cartesian-axis-line');
143
+ expect(xAxisLine).toHaveAttribute('angle', '-45');
144
+ expect(xAxisLine).toHaveAttribute('text-anchor', 'end');
95
145
  });
96
146
  it('should render YAxis for big numbers correctly', function () {
97
- var wrapper = (0, enzyme_1.shallow)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data }));
98
- expect(wrapper.find(recharts_1.YAxis)).toHaveLength(1);
99
- var formatter = wrapper.find(recharts_1.YAxis).prop('tickFormatter');
100
- expect(formatter(100100)).toBe('100.1K');
147
+ var container = setUp(__assign(__assign({}, defaultProps), { data: __spreadArray(__spreadArray([], defaultProps.data, true), [{ label: 'fouth', value: 100100, group: '3' }], false) })).container;
148
+ var yAxis = container.querySelector('.recharts-yAxis');
149
+ var yAxisTicks = yAxis.querySelectorAll('.recharts-cartesian-axis-tick');
150
+ expect(yAxisTicks).toHaveLength(8);
151
+ (0, react_2.within)(yAxisTicks[0]).getByText('0');
152
+ (0, react_2.within)(yAxisTicks[1]).getByText('15.0K');
153
+ (0, react_2.within)(yAxisTicks[2]).getByText('30.0K');
154
+ (0, react_2.within)(yAxisTicks[3]).getByText('45.0K');
155
+ (0, react_2.within)(yAxisTicks[4]).getByText('60.0K');
156
+ (0, react_2.within)(yAxisTicks[5]).getByText('75.0K');
157
+ (0, react_2.within)(yAxisTicks[6]).getByText('90.0K');
158
+ (0, react_2.within)(yAxisTicks[7]).getByText('105.0K');
101
159
  });
102
- it('should render data cells', function () {
103
- var _a;
104
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data }));
105
- var bar = wrapper.find(recharts_1.Bar);
106
- expect(bar).toHaveLength(1);
107
- expect((_a = bar.prop('data')) === null || _a === void 0 ? void 0 : _a.length).toBe(3);
108
- var barRectangles = bar.find('Rectangle');
109
- barRectangles.forEach(function (item, index) {
110
- expect(item.prop('label')).toBe(data[index].label);
111
- expect(item.prop('value')).toBe(data[index].value);
112
- expect(item.prop('fill')).toBe(defaultBarColor);
160
+ it('should call props.onItemClick on rect click', function () { return __awaiter(void 0, void 0, void 0, function () {
161
+ var onItemClickFn, _a, user, container, barRectangles;
162
+ return __generator(this, function (_b) {
163
+ switch (_b.label) {
164
+ case 0:
165
+ onItemClickFn = jest.fn();
166
+ _a = setUp(__assign(__assign({}, defaultProps), { onItemClick: onItemClickFn })), user = _a.user, container = _a.container;
167
+ barRectangles = container.querySelectorAll('.recharts-bar-rectangle');
168
+ expect(barRectangles).toHaveLength(3);
169
+ return [4 /*yield*/, user.click(barRectangles[0])];
170
+ case 1:
171
+ _b.sent();
172
+ expect(onItemClickFn).toHaveBeenLastCalledWith(defaultProps.data[0].group);
173
+ return [4 /*yield*/, user.click(barRectangles[1])];
174
+ case 2:
175
+ _b.sent();
176
+ expect(onItemClickFn).toHaveBeenLastCalledWith(defaultProps.data[1].group);
177
+ return [4 /*yield*/, user.click(barRectangles[2])];
178
+ case 3:
179
+ _b.sent();
180
+ expect(onItemClickFn).toHaveBeenLastCalledWith(defaultProps.data[2].group);
181
+ return [2 /*return*/];
182
+ }
113
183
  });
114
- });
115
- it('should call props.onItemClick on rect click', function () {
116
- var onItemClick = jest.fn();
117
- var wrapper = (0, enzyme_1.mount)(react_1.default.createElement(BarChart_1.BarChart, { width: 100, height: 100, data: data, onItemClick: onItemClick }));
118
- var rect = wrapper.find('.recharts-bar-rectangle').first();
119
- rect.simulate('click');
120
- expect(onItemClick).toBeCalledWith('1');
121
- });
184
+ }); });
122
185
  });
@@ -1,25 +1,42 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
5
16
  Object.defineProperty(exports, "__esModule", { value: true });
6
17
  var react_1 = __importDefault(require("react"));
7
- var enzyme_1 = require("enzyme");
8
18
  var BasicAttributeSelector_1 = __importDefault(require("./BasicAttributeSelector"));
9
- var AttributeTitle_1 = require("./components/AttributeTitle");
19
+ var react_2 = require("@testing-library/react");
10
20
  describe('BasicAttributeSelector tests', function () {
11
- var getAttributeTitle = function (component) { return component.find(AttributeTitle_1.AttributeTitle); };
12
21
  var selectedItem = {
13
22
  fieldName: 'selected',
14
23
  title: 'selectedField'
15
24
  };
16
- var itemsGroups = [
17
- { attributes: [{ fieldName: 'field1', title: 'field1' }, selectedItem], title: '' },
18
- { attributes: [{ fieldName: 'field2', title: 'field2' }], title: '' }
19
- ];
25
+ var defaultProps = {
26
+ value: selectedItem,
27
+ disabled: true,
28
+ itemsGroups: [
29
+ { attributes: [{ fieldName: 'field1', title: 'field1' }, selectedItem], title: '' },
30
+ { attributes: [{ fieldName: 'field2', title: 'field2' }], title: '' }
31
+ ],
32
+ onSelect: jest.fn()
33
+ };
34
+ var setUp = function (props) {
35
+ if (props === void 0) { props = defaultProps; }
36
+ return (0, react_2.render)(react_1.default.createElement(BasicAttributeSelector_1.default, __assign({}, props)));
37
+ };
20
38
  it('should provide disable props to AttributeTitle', function () {
21
- var onSelect = jest.fn();
22
- var component = (0, enzyme_1.mount)(react_1.default.createElement(BasicAttributeSelector_1.default, { onSelect: onSelect, itemsGroups: itemsGroups, value: selectedItem, disabled: true }));
23
- expect(getAttributeTitle(component).prop('disabled')).toBe(true);
39
+ setUp();
40
+ expect(react_2.screen.getByText(selectedItem.title)).toHaveClass('disabled');
24
41
  });
25
42
  });