@reltio/components 1.4.2051 → 1.4.2053

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 (171) hide show
  1. package/AttributeListItem/AttributeListItem.d.ts +1 -1
  2. package/ChartTooltip/ChartTooltip.js +3 -3
  3. package/ColumnsSettings/components/ColumnListItem/ColumnListItem.d.ts +11 -26
  4. package/ColumnsSettings/components/ColumnListItem/ColumnListItem.js +0 -14
  5. package/DropDownMenuButton/DropDownMenuButton.js +1 -1
  6. package/HOCs/withAsyncMount/withAsyncMount.test.js +52 -52
  7. package/IgnoreButton/IgnoreButton.spec.js +109 -20
  8. package/Image/Image.d.ts +1 -1
  9. package/Image/Image.js +8 -8
  10. package/Image/Image.test.js +46 -51
  11. package/ImageActionsOverlay/ImageActionsOverlay.js +2 -1
  12. package/ImageActionsOverlay/ImageActionsOverlay.test.js +207 -125
  13. package/ImageActionsOverlay/components/CheckedIcon/CheckedIcon.js +1 -1
  14. package/ImageAttributesGallery/ImageAttributesGallery.test.js +525 -281
  15. package/ImageAttributesLine/ImageAttributesLine.js +1 -1
  16. package/ImageAttributesLine/ImageAttributesLine.test.js +187 -193
  17. package/ImageAttributesLine/imageAttributeValues.test-data.d.ts +10 -0
  18. package/ImageAttributesLine/imageAttributeValues.test-data.js +22 -0
  19. package/ImageAttributesLineEditor/ImageAttributesLineEditor.test.js +315 -298
  20. package/ImageDetailsView/ImageDetailsView.test.js +529 -55
  21. package/ImageDetailsView/attributes.test-data.d.ts +4 -1
  22. package/ImageDetailsView/attributes.test-data.js +98 -1
  23. package/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.js +2 -2
  24. package/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.js +1 -1
  25. package/ImageDetailsView/components/MetaInfoList/MetaInfoList.js +1 -1
  26. package/ImageDetailsView/components/Thumbnails/Thumbnails.js +1 -1
  27. package/ImageDetailsView/helpers.test.js +4 -4
  28. package/ImageGalleryDialog/ImageGalleryDialog.test.js +89 -46
  29. package/ImportButton/ImportButton.test.js +94 -24
  30. package/InlineAttributesList/InlineAttributesList.test.js +22 -62
  31. package/InlineAttributesList/attributes.test-data.d.ts +4 -2
  32. package/InlineAttributesList/attributes.test-data.js +40 -1
  33. package/InlineAttributesPager/InlineAttributesPager.d.ts +1 -2
  34. package/InlineAttributesPager/InlineAttributesPager.js +1 -4
  35. package/InlineAttributesPager/InlineAttributesPager.test.js +393 -183
  36. package/InlineComplexAttribute/InlineComplexAttribute.js +1 -1
  37. package/InlineComplexAttribute/InlineComplexAttribute.test.js +396 -182
  38. package/InlineImageAttribute/InlineImageAttribute.test.js +103 -55
  39. package/InlineNestedAttribute/InlineNestedAttribute.test.js +105 -43
  40. package/InlineReferenceAttribute/InlineReferenceAttribute.test.js +165 -107
  41. package/InlineSimpleAttribute/InlineSimpleAttribute.spec.js +352 -346
  42. package/InlineSimpleAttributeEditor/InlineSimpleAttributeEditor.test.js +285 -194
  43. package/InternalLink/InternalLink.test.js +41 -11
  44. package/LookupEditor/LookupEditor.test.js +180 -44
  45. package/LookupEditor/components/GroupedDropDownEditor/helpers.test.js +1 -1
  46. package/MapChart/MapChart.js +3 -8
  47. package/MapChart/MapChart.test.js +152 -188
  48. package/MapChart/components/Legend/Legend.js +3 -3
  49. package/MaskingSwitcher/MaskingSwitcher.js +1 -1
  50. package/MatchRulesBadge/MatchRulesBadge.test.js +93 -24
  51. package/SelectEditor/SelectEditor.d.ts +4 -10
  52. package/SelectEditor/SelectEditor.js +0 -4
  53. package/SelectEditor/SelectEditor.test.js +79 -9
  54. package/cjs/AttributeListItem/AttributeListItem.d.ts +1 -1
  55. package/cjs/ChartTooltip/ChartTooltip.js +3 -3
  56. package/cjs/ColumnsSettings/components/ColumnListItem/ColumnListItem.d.ts +11 -26
  57. package/cjs/ColumnsSettings/components/ColumnListItem/ColumnListItem.js +0 -14
  58. package/cjs/DropDownMenuButton/DropDownMenuButton.js +1 -1
  59. package/cjs/HOCs/withAsyncMount/withAsyncMount.test.js +56 -56
  60. package/cjs/IgnoreButton/IgnoreButton.spec.js +109 -20
  61. package/cjs/Image/Image.d.ts +1 -1
  62. package/cjs/Image/Image.js +8 -8
  63. package/cjs/Image/Image.test.js +46 -51
  64. package/cjs/ImageActionsOverlay/ImageActionsOverlay.js +2 -1
  65. package/cjs/ImageActionsOverlay/ImageActionsOverlay.test.js +207 -125
  66. package/cjs/ImageActionsOverlay/components/CheckedIcon/CheckedIcon.js +1 -1
  67. package/cjs/ImageAttributesGallery/ImageAttributesGallery.test.js +525 -281
  68. package/cjs/ImageAttributesLine/ImageAttributesLine.js +1 -1
  69. package/cjs/ImageAttributesLine/ImageAttributesLine.test.js +195 -224
  70. package/cjs/ImageAttributesLine/imageAttributeValues.test-data.d.ts +10 -0
  71. package/cjs/ImageAttributesLine/imageAttributeValues.test-data.js +23 -1
  72. package/cjs/ImageAttributesLineEditor/ImageAttributesLineEditor.test.js +316 -299
  73. package/cjs/ImageDetailsView/ImageDetailsView.test.js +529 -55
  74. package/cjs/ImageDetailsView/attributes.test-data.d.ts +4 -1
  75. package/cjs/ImageDetailsView/attributes.test-data.js +99 -2
  76. package/cjs/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.js +2 -2
  77. package/cjs/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.js +1 -1
  78. package/cjs/ImageDetailsView/components/MetaInfoList/MetaInfoList.js +1 -1
  79. package/cjs/ImageDetailsView/components/Thumbnails/Thumbnails.js +1 -1
  80. package/cjs/ImageDetailsView/helpers.test.js +3 -3
  81. package/cjs/ImageGalleryDialog/ImageGalleryDialog.test.js +89 -46
  82. package/cjs/ImportButton/ImportButton.test.js +94 -24
  83. package/cjs/InlineAttributesList/InlineAttributesList.test.js +22 -62
  84. package/cjs/InlineAttributesList/attributes.test-data.d.ts +4 -2
  85. package/cjs/InlineAttributesList/attributes.test-data.js +41 -2
  86. package/cjs/InlineAttributesPager/InlineAttributesPager.d.ts +1 -2
  87. package/cjs/InlineAttributesPager/InlineAttributesPager.js +1 -4
  88. package/cjs/InlineAttributesPager/InlineAttributesPager.test.js +393 -183
  89. package/cjs/InlineComplexAttribute/InlineComplexAttribute.js +1 -1
  90. package/cjs/InlineComplexAttribute/InlineComplexAttribute.test.js +395 -204
  91. package/cjs/InlineImageAttribute/InlineImageAttribute.test.js +103 -55
  92. package/cjs/InlineNestedAttribute/InlineNestedAttribute.test.js +105 -43
  93. package/cjs/InlineReferenceAttribute/InlineReferenceAttribute.test.js +164 -106
  94. package/cjs/InlineSimpleAttribute/InlineSimpleAttribute.spec.js +351 -345
  95. package/cjs/InlineSimpleAttributeEditor/InlineSimpleAttributeEditor.test.js +307 -193
  96. package/cjs/InternalLink/InternalLink.test.js +40 -10
  97. package/cjs/LookupEditor/LookupEditor.test.js +178 -65
  98. package/cjs/LookupEditor/components/GroupedDropDownEditor/helpers.test.js +1 -1
  99. package/cjs/MapChart/MapChart.js +3 -8
  100. package/cjs/MapChart/MapChart.test.js +152 -188
  101. package/cjs/MapChart/components/Legend/Legend.js +3 -3
  102. package/cjs/MaskingSwitcher/MaskingSwitcher.js +1 -1
  103. package/cjs/MatchRulesBadge/MatchRulesBadge.test.js +93 -24
  104. package/cjs/SelectEditor/SelectEditor.d.ts +4 -10
  105. package/cjs/SelectEditor/SelectEditor.js +0 -4
  106. package/cjs/SelectEditor/SelectEditor.test.js +79 -9
  107. package/cjs/hooks/useAsyncMount/useAsyncMount.d.ts +1 -1
  108. package/cjs/hooks/useAsyncMount/useAsyncMount.js +1 -1
  109. package/hooks/useAsyncMount/useAsyncMount.d.ts +1 -1
  110. package/hooks/useAsyncMount/useAsyncMount.js +1 -1
  111. package/package.json +2 -2
  112. package/HOCs/withTableContext/withTableContext.test.d.ts +0 -1
  113. package/HOCs/withTableContext/withTableContext.test.js +0 -41
  114. package/ImageAttributesGallery/components/GalleryView/GalleryView.test.d.ts +0 -1
  115. package/ImageAttributesGallery/components/GalleryView/GalleryView.test.js +0 -98
  116. package/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.test.d.ts +0 -1
  117. package/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.test.js +0 -99
  118. package/ImageDetailsView/components/ImageDetailsViewSidebar/ImageDetailsViewSidebar.test.d.ts +0 -1
  119. package/ImageDetailsView/components/ImageDetailsViewSidebar/ImageDetailsViewSidebar.test.js +0 -65
  120. package/ImageDetailsView/components/MetaInfo/MetaInfo.test.d.ts +0 -1
  121. package/ImageDetailsView/components/MetaInfo/MetaInfo.test.js +0 -306
  122. package/ImageDetailsView/components/MetaInfoForm/MetaInfoForm.test.d.ts +0 -1
  123. package/ImageDetailsView/components/MetaInfoForm/MetaInfoForm.test.js +0 -134
  124. package/ImageDetailsView/components/MetaInfoHeader/MetaInfoHeader.test.d.ts +0 -1
  125. package/ImageDetailsView/components/MetaInfoHeader/MetaInfoHeader.test.js +0 -99
  126. package/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.test.d.ts +0 -1
  127. package/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.test.js +0 -36
  128. package/ImageDetailsView/components/MetaInfoList/MetaInfoList.test.d.ts +0 -1
  129. package/ImageDetailsView/components/MetaInfoList/MetaInfoList.test.js +0 -161
  130. package/ImageDetailsView/components/Thumbnails/Thumbnails.test.d.ts +0 -1
  131. package/ImageDetailsView/components/Thumbnails/Thumbnails.test.js +0 -76
  132. package/InlineAttributesPager/components/InlineImageAttributesBlock/InlineImageAttributesBlock.test.d.ts +0 -1
  133. package/InlineAttributesPager/components/InlineImageAttributesBlock/InlineImageAttributesBlock.test.js +0 -104
  134. package/InlineAttributesPager/components/InlineNestedAttributesBlock/InlineNestedAttributesBlock.test.d.ts +0 -1
  135. package/InlineAttributesPager/components/InlineNestedAttributesBlock/InlineNestedAttributesBlock.test.js +0 -114
  136. package/InlineAttributesPager/components/InlineReferenceAttributesBlock/InlineReferenceAttributesBlock.test.d.ts +0 -1
  137. package/InlineAttributesPager/components/InlineReferenceAttributesBlock/InlineReferenceAttributesBlock.test.js +0 -177
  138. package/InlineSimpleAttribute/components/CrosswalkMenuItem/CrosswalkMenuItem.spec.d.ts +0 -1
  139. package/InlineSimpleAttribute/components/CrosswalkMenuItem/CrosswalkMenuItem.spec.js +0 -52
  140. package/LookupEditor/components/GroupedDropDownEditor/GroupedDropDownEditor.test.d.ts +0 -1
  141. package/LookupEditor/components/GroupedDropDownEditor/GroupedDropDownEditor.test.js +0 -37
  142. package/cjs/HOCs/withTableContext/withTableContext.test.d.ts +0 -1
  143. package/cjs/HOCs/withTableContext/withTableContext.test.js +0 -46
  144. package/cjs/ImageAttributesGallery/components/GalleryView/GalleryView.test.d.ts +0 -1
  145. package/cjs/ImageAttributesGallery/components/GalleryView/GalleryView.test.js +0 -103
  146. package/cjs/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.test.d.ts +0 -1
  147. package/cjs/ImageDetailsView/components/ImageDetailsViewCarousel/ImageDetailsViewCarousel.test.js +0 -104
  148. package/cjs/ImageDetailsView/components/ImageDetailsViewSidebar/ImageDetailsViewSidebar.test.d.ts +0 -1
  149. package/cjs/ImageDetailsView/components/ImageDetailsViewSidebar/ImageDetailsViewSidebar.test.js +0 -70
  150. package/cjs/ImageDetailsView/components/MetaInfo/MetaInfo.test.d.ts +0 -1
  151. package/cjs/ImageDetailsView/components/MetaInfo/MetaInfo.test.js +0 -311
  152. package/cjs/ImageDetailsView/components/MetaInfoForm/MetaInfoForm.test.d.ts +0 -1
  153. package/cjs/ImageDetailsView/components/MetaInfoForm/MetaInfoForm.test.js +0 -139
  154. package/cjs/ImageDetailsView/components/MetaInfoHeader/MetaInfoHeader.test.d.ts +0 -1
  155. package/cjs/ImageDetailsView/components/MetaInfoHeader/MetaInfoHeader.test.js +0 -104
  156. package/cjs/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.test.d.ts +0 -1
  157. package/cjs/ImageDetailsView/components/MetaInfoItem/MetaInfoItem.test.js +0 -41
  158. package/cjs/ImageDetailsView/components/MetaInfoList/MetaInfoList.test.d.ts +0 -1
  159. package/cjs/ImageDetailsView/components/MetaInfoList/MetaInfoList.test.js +0 -166
  160. package/cjs/ImageDetailsView/components/Thumbnails/Thumbnails.test.d.ts +0 -1
  161. package/cjs/ImageDetailsView/components/Thumbnails/Thumbnails.test.js +0 -81
  162. package/cjs/InlineAttributesPager/components/InlineImageAttributesBlock/InlineImageAttributesBlock.test.d.ts +0 -1
  163. package/cjs/InlineAttributesPager/components/InlineImageAttributesBlock/InlineImageAttributesBlock.test.js +0 -109
  164. package/cjs/InlineAttributesPager/components/InlineNestedAttributesBlock/InlineNestedAttributesBlock.test.d.ts +0 -1
  165. package/cjs/InlineAttributesPager/components/InlineNestedAttributesBlock/InlineNestedAttributesBlock.test.js +0 -119
  166. package/cjs/InlineAttributesPager/components/InlineReferenceAttributesBlock/InlineReferenceAttributesBlock.test.d.ts +0 -1
  167. package/cjs/InlineAttributesPager/components/InlineReferenceAttributesBlock/InlineReferenceAttributesBlock.test.js +0 -182
  168. package/cjs/InlineSimpleAttribute/components/CrosswalkMenuItem/CrosswalkMenuItem.spec.d.ts +0 -1
  169. package/cjs/InlineSimpleAttribute/components/CrosswalkMenuItem/CrosswalkMenuItem.spec.js +0 -57
  170. package/cjs/LookupEditor/components/GroupedDropDownEditor/GroupedDropDownEditor.test.d.ts +0 -1
  171. package/cjs/LookupEditor/components/GroupedDropDownEditor/GroupedDropDownEditor.test.js +0 -42
@@ -9,16 +9,47 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
12
48
  import React from 'react';
13
49
  import { range } from 'ramda';
14
- import { mount } from 'enzyme';
15
- import { act } from 'react-dom/test-utils';
50
+ import { fireEvent, render, screen } from '@testing-library/react';
51
+ import userEvent from '@testing-library/user-event';
16
52
  import { Mode } from '@reltio/mdm-sdk';
17
- import { GalleryView } from './components/GalleryView';
18
- import { HeaderLeft } from './components/HeaderLeft';
19
- import { HeaderRight } from './components/HeaderRight';
20
- import { ImageGalleryDialog } from '../ImageGalleryDialog';
21
- import { ImageDetailsView } from '../ImageDetailsView';
22
53
  import { MdmModuleProvider } from '../contexts/MdmModuleContext';
23
54
  import { ImageAttributesGallery } from './ImageAttributesGallery';
24
55
  var generateAttributeValues = function (count) {
@@ -70,110 +101,241 @@ var defaultProps = {
70
101
  onDeleteAttribute: jest.fn()
71
102
  };
72
103
  var setUp = function (_a) {
73
- var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? defaultProps : _c, _d = _b.mdmValues, mdmValues = _d === void 0 ? defaultMdmValues : _d;
74
- return mount(React.createElement(MdmModuleProvider, { values: mdmValues },
75
- React.createElement(ImageAttributesGallery, __assign({}, props))));
104
+ var _b = _a === void 0 ? {} : _a, _c = _b.props, props = _c === void 0 ? {} : _c, _d = _b.mdmValues, mdmValues = _d === void 0 ? defaultMdmValues : _d;
105
+ var user = userEvent.setup({ skipHover: true });
106
+ var Providers = function (_a) {
107
+ var children = _a.children;
108
+ return (React.createElement(MdmModuleProvider, { values: mdmValues }, children));
109
+ };
110
+ return __assign({ user: user }, render(React.createElement(ImageAttributesGallery, __assign({}, defaultProps, props)), { wrapper: Providers }));
76
111
  };
77
112
  describe('ImageAttributesGallery tests', function () {
78
113
  afterEach(function () {
79
114
  jest.clearAllMocks();
80
115
  });
81
116
  it('should render main parts', function () {
82
- var component = setUp();
83
- expect(component.find(ImageGalleryDialog)).toHaveLength(1);
84
- expect(component.find(GalleryView)).toHaveLength(1);
117
+ setUp();
118
+ var images = screen.getAllByRole('img');
119
+ expect(images).toHaveLength(3);
120
+ expect(screen.getByLabelText('Close')).toBeInTheDocument();
121
+ expect(screen.getByTestId('reltio-search-mode-gallery')).toHaveClass('current');
122
+ expect(screen.getByTestId('reltio-search-mode-details')).not.toHaveClass('current');
85
123
  });
86
- it('should select and deselect items', function () {
87
- var component = setUp();
88
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1';
89
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
90
- act(function () {
91
- component.find(GalleryView).prop('onSelectImage')(id);
92
- });
93
- component.update();
94
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([id]);
95
- act(function () {
96
- component.find(GalleryView).prop('onDeselectImage')(id);
124
+ it('should select and deselect items', function () { return __awaiter(void 0, void 0, void 0, function () {
125
+ var user, images, checkButton, checkedButtons;
126
+ return __generator(this, function (_a) {
127
+ switch (_a.label) {
128
+ case 0:
129
+ user = setUp().user;
130
+ images = screen.getAllByRole('img');
131
+ images.forEach(function (image) {
132
+ fireEvent.load(image);
133
+ });
134
+ expect(screen.queryByTestId('checked-button')).not.toBeInTheDocument();
135
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
136
+ case 1:
137
+ _a.sent();
138
+ checkButton = screen.getByTestId('checked-button');
139
+ expect(checkButton).toHaveAttribute('data-testid', 'RadioButtonUncheckedIcon');
140
+ expect(screen.queryByText('Deselect')).not.toBeInTheDocument();
141
+ expect(screen.queryByText('Select all images')).not.toBeInTheDocument();
142
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
143
+ return [4 /*yield*/, user.click(checkButton)];
144
+ case 2:
145
+ _a.sent();
146
+ expect(screen.getByText('Deselect')).toBeInTheDocument();
147
+ expect(screen.getByText('Select all images')).toBeInTheDocument();
148
+ expect(screen.getByLabelText('Download selected items')).toBeInTheDocument();
149
+ checkedButtons = screen.getAllByTestId('checked-button');
150
+ expect(checkedButtons).toHaveLength(3);
151
+ expect(checkedButtons[0]).toHaveAttribute('data-testid', 'CheckCircleIcon');
152
+ expect(checkedButtons[1]).toHaveAttribute('data-testid', 'RadioButtonUncheckedIcon');
153
+ expect(checkedButtons[2]).toHaveAttribute('data-testid', 'RadioButtonUncheckedIcon');
154
+ return [4 /*yield*/, user.click(checkedButtons[1])];
155
+ case 3:
156
+ _a.sent();
157
+ expect(screen.getAllByText('Deselect')).toHaveLength(2);
158
+ expect(screen.getAllByTestId('checked-button')[1]).toHaveAttribute('data-testid', 'CheckCircleIcon');
159
+ return [4 /*yield*/, user.click(screen.getByLabelText('Download selected items'))];
160
+ case 4:
161
+ _a.sent();
162
+ expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg', './image1.jpg']);
163
+ return [4 /*yield*/, user.click(screen.getAllByText('Deselect')[0])];
164
+ case 5:
165
+ _a.sent();
166
+ return [4 /*yield*/, user.click(screen.getAllByTestId('checked-button')[1])];
167
+ case 6:
168
+ _a.sent();
169
+ expect(screen.queryByText('Deselect')).not.toBeInTheDocument();
170
+ expect(screen.queryByText('Select all images')).not.toBeInTheDocument();
171
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
172
+ return [2 /*return*/];
173
+ }
97
174
  });
98
- component.update();
99
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
100
- });
101
- it('should select all and deselect all items', function () {
102
- var component = setUp();
103
- var id0 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
104
- var id1 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1';
105
- var id2 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ2';
106
- act(function () {
107
- component.find(GalleryView).prop('onSelectImage')(id1);
175
+ }); });
176
+ it('should select all and deselect all items', function () { return __awaiter(void 0, void 0, void 0, function () {
177
+ var user, images, checkedButtons;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ user = setUp().user;
182
+ images = screen.getAllByRole('img');
183
+ images.forEach(function (image) {
184
+ fireEvent.load(image);
185
+ });
186
+ expect(screen.queryByTestId('checked-button')).not.toBeInTheDocument();
187
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
188
+ case 1:
189
+ _a.sent();
190
+ expect(screen.queryByText('Deselect')).not.toBeInTheDocument();
191
+ expect(screen.queryByText('Select all images')).not.toBeInTheDocument();
192
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
193
+ return [4 /*yield*/, user.click(screen.getByTestId('checked-button'))];
194
+ case 2:
195
+ _a.sent();
196
+ return [4 /*yield*/, user.click(screen.getByText('Select all images'))];
197
+ case 3:
198
+ _a.sent();
199
+ expect(screen.getAllByText('Deselect')).toHaveLength(3);
200
+ checkedButtons = screen.getAllByTestId('checked-button');
201
+ expect(checkedButtons).toHaveLength(3);
202
+ expect(checkedButtons[0]).toHaveAttribute('data-testid', 'CheckCircleIcon');
203
+ expect(checkedButtons[1]).toHaveAttribute('data-testid', 'CheckCircleIcon');
204
+ expect(checkedButtons[2]).toHaveAttribute('data-testid', 'CheckCircleIcon');
205
+ return [4 /*yield*/, user.click(screen.getByLabelText('Download selected items'))];
206
+ case 4:
207
+ _a.sent();
208
+ expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg', './image1.jpg', './image2.jpg']);
209
+ return [4 /*yield*/, user.click(screen.getByText('Clear selection'))];
210
+ case 5:
211
+ _a.sent();
212
+ expect(screen.queryByText('Deselect')).not.toBeInTheDocument();
213
+ expect(screen.queryByText('Select all images')).not.toBeInTheDocument();
214
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
215
+ return [2 /*return*/];
216
+ }
108
217
  });
109
- component.update();
110
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([id1]);
111
- act(function () {
112
- component.find(HeaderLeft).prop('onSelectAll')();
218
+ }); });
219
+ it('should close gallery', function () { return __awaiter(void 0, void 0, void 0, function () {
220
+ var user;
221
+ return __generator(this, function (_a) {
222
+ switch (_a.label) {
223
+ case 0:
224
+ user = setUp().user;
225
+ return [4 /*yield*/, user.click(screen.getByLabelText('Close'))];
226
+ case 1:
227
+ _a.sent();
228
+ expect(defaultProps.onClose).toHaveBeenCalled();
229
+ return [2 /*return*/];
230
+ }
113
231
  });
114
- component.update();
115
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([id0, id1, id2]);
116
- act(function () {
117
- component.find(HeaderLeft).prop('onClearAll')();
232
+ }); });
233
+ it('should not provide onDelete if viewing mode', function () { return __awaiter(void 0, void 0, void 0, function () {
234
+ var user, images;
235
+ return __generator(this, function (_a) {
236
+ switch (_a.label) {
237
+ case 0:
238
+ user = setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Viewing }) }).user;
239
+ images = screen.getAllByRole('img');
240
+ fireEvent.load(images[0]);
241
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
242
+ case 1:
243
+ _a.sent();
244
+ return [4 /*yield*/, user.click(screen.getByTestId('image-overlay-actions'))];
245
+ case 2:
246
+ _a.sent();
247
+ expect(screen.queryByText('Delete')).not.toBeInTheDocument();
248
+ return [2 /*return*/];
249
+ }
118
250
  });
119
- component.update();
120
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
121
- });
122
- it('should close gallery', function () {
123
- var component = setUp();
124
- act(function () {
125
- var onClose = component.find(ImageGalleryDialog).prop('onClose');
126
- if (onClose) {
127
- onClose();
251
+ }); });
252
+ it('should provide onDelete if editing mode', function () { return __awaiter(void 0, void 0, void 0, function () {
253
+ var user, images;
254
+ return __generator(this, function (_a) {
255
+ switch (_a.label) {
256
+ case 0:
257
+ user = setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing }) }).user;
258
+ images = screen.getAllByRole('img');
259
+ fireEvent.load(images[0]);
260
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
261
+ case 1:
262
+ _a.sent();
263
+ return [4 /*yield*/, user.click(screen.getByTestId('image-overlay-actions'))];
264
+ case 2:
265
+ _a.sent();
266
+ expect(screen.queryByText('Delete')).toBeInTheDocument();
267
+ return [2 /*return*/];
128
268
  }
129
269
  });
130
- component.update();
131
- expect(defaultProps.onClose).toHaveBeenCalled();
132
- });
133
- it('should not provide onDelete if viewing mode', function () {
134
- var component = setUp();
135
- var onDelete = component.find(GalleryView).prop('onDelete');
136
- expect(onDelete).toBeUndefined();
137
- });
138
- it('should provide onDelete if editing mode', function () {
139
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
140
- var component = setUp({ mdmValues: mdmValues });
141
- var onDelete = component.find(GalleryView).prop('onDelete');
142
- expect(onDelete).not.toBeUndefined();
143
- });
144
- it('handleClickByImage', function () {
145
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
146
- var component = setUp();
147
- expect(component.find(ImageGalleryDialog).prop('mode')).toBe('gallery');
148
- act(function () {
149
- component.find(GalleryView).prop('onClickImage')(id);
270
+ }); });
271
+ it('handleClickByImage', function () { return __awaiter(void 0, void 0, void 0, function () {
272
+ var user, images;
273
+ return __generator(this, function (_a) {
274
+ switch (_a.label) {
275
+ case 0:
276
+ user = setUp().user;
277
+ images = screen.getAllByRole('img');
278
+ images.forEach(function (image) {
279
+ fireEvent.load(image);
280
+ });
281
+ expect(screen.getByTestId('reltio-search-mode-gallery')).toHaveClass('current');
282
+ expect(screen.getByTestId('reltio-search-mode-details')).not.toHaveClass('current');
283
+ return [4 /*yield*/, user.click(images[0])];
284
+ case 1:
285
+ _a.sent();
286
+ expect(screen.getByTestId('reltio-search-mode-gallery')).not.toHaveClass('current');
287
+ expect(screen.getByTestId('reltio-search-mode-details')).toHaveClass('current');
288
+ expect(defaultProps.setCurrentAttributeValueUri).toHaveBeenCalledWith('entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0');
289
+ expect(screen.getByText('Meta info')).toBeInTheDocument();
290
+ return [2 /*return*/];
291
+ }
150
292
  });
151
- expect(defaultProps.setCurrentAttributeValueUri).toHaveBeenCalledWith(id);
152
- component.update();
153
- expect(component.find(ImageGalleryDialog).prop('mode')).toBe('details');
154
- });
293
+ }); });
155
294
  describe('share link', function () {
156
- it('action for GalleryView', function () {
157
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
158
- var component = setUp();
159
- act(function () {
160
- var onShareLink = component.find(GalleryView).prop('onShareLink');
161
- if (onShareLink) {
162
- onShareLink(id);
295
+ it('action for GalleryView', function () { return __awaiter(void 0, void 0, void 0, function () {
296
+ var user, images;
297
+ return __generator(this, function (_a) {
298
+ switch (_a.label) {
299
+ case 0:
300
+ user = setUp().user;
301
+ images = screen.getAllByRole('img');
302
+ images.forEach(function (image) {
303
+ fireEvent.load(image);
304
+ });
305
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
306
+ case 1:
307
+ _a.sent();
308
+ return [4 /*yield*/, user.click(screen.getByTestId('image-overlay-actions'))];
309
+ case 2:
310
+ _a.sent();
311
+ return [4 /*yield*/, user.click(screen.getByText('Share link'))];
312
+ case 3:
313
+ _a.sent();
314
+ expect(defaultProps.onShareLink).toHaveBeenCalledWith('./image0.jpg');
315
+ return [2 /*return*/];
163
316
  }
164
317
  });
165
- expect(defaultProps.onShareLink).toHaveBeenLastCalledWith('./image0.jpg');
166
- });
167
- it('action for HeaderRight', function () {
168
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
169
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: id });
170
- var component = setUp({ props: props });
171
- act(function () {
172
- var onShare = component.find(HeaderRight).prop('onShare');
173
- onShare(id);
318
+ }); });
319
+ it('action for HeaderRight', function () { return __awaiter(void 0, void 0, void 0, function () {
320
+ var user, images;
321
+ return __generator(this, function (_a) {
322
+ switch (_a.label) {
323
+ case 0:
324
+ user = setUp({
325
+ props: { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0' }
326
+ }).user;
327
+ images = screen.getAllByRole('img');
328
+ images.forEach(function (image) {
329
+ fireEvent.load(image);
330
+ });
331
+ return [4 /*yield*/, user.click(screen.getByLabelText('Copy link'))];
332
+ case 1:
333
+ _a.sent();
334
+ expect(defaultProps.onShareLink).toHaveBeenCalledWith('./image0.jpg');
335
+ return [2 /*return*/];
336
+ }
174
337
  });
175
- expect(defaultProps.onShareLink).toHaveBeenLastCalledWith('./image0.jpg');
176
- });
338
+ }); });
177
339
  });
178
340
  describe('set as default', function () {
179
341
  var result = {
@@ -199,217 +361,299 @@ describe('ImageAttributesGallery tests', function () {
199
361
  ]
200
362
  }
201
363
  };
202
- it('should be called from GalleryView', function () {
203
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
204
- var component = setUp();
205
- act(function () {
206
- var onSetAsDefault = component.find(GalleryView).prop('onSetAsDefault');
207
- if (onSetAsDefault) {
208
- onSetAsDefault(id);
364
+ it('should be called from GalleryView', function () { return __awaiter(void 0, void 0, void 0, function () {
365
+ var user, images;
366
+ return __generator(this, function (_a) {
367
+ switch (_a.label) {
368
+ case 0:
369
+ user = setUp().user;
370
+ images = screen.getAllByRole('img');
371
+ images.forEach(function (image) {
372
+ fireEvent.load(image);
373
+ });
374
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
375
+ case 1:
376
+ _a.sent();
377
+ return [4 /*yield*/, user.click(screen.getByTestId('image-overlay-actions'))];
378
+ case 2:
379
+ _a.sent();
380
+ return [4 /*yield*/, user.click(screen.getByText('Set as default'))];
381
+ case 3:
382
+ _a.sent();
383
+ expect(defaultProps.onSetAsDefault).toHaveBeenCalledWith(result);
384
+ return [2 /*return*/];
209
385
  }
210
386
  });
211
- expect(defaultProps.onSetAsDefault).toHaveBeenLastCalledWith(result);
212
- });
213
- it('should be called from ImageDetailsView', function () {
214
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
215
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: id });
216
- var component = setUp({ props: props });
217
- act(function () {
218
- component.find(ImageDetailsView).prop('handleSetAsDefault')(id);
387
+ }); });
388
+ it('should be called from ImageDetailsView', function () { return __awaiter(void 0, void 0, void 0, function () {
389
+ var user, images;
390
+ return __generator(this, function (_a) {
391
+ switch (_a.label) {
392
+ case 0:
393
+ user = setUp({
394
+ props: { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0' }
395
+ }).user;
396
+ images = screen.getAllByRole('img');
397
+ images.forEach(function (image) {
398
+ fireEvent.load(image);
399
+ });
400
+ return [4 /*yield*/, user.click(screen.getByLabelText('Set as default'))];
401
+ case 1:
402
+ _a.sent();
403
+ expect(defaultProps.onSetAsDefault).toHaveBeenCalledWith(result);
404
+ return [2 /*return*/];
405
+ }
219
406
  });
220
- expect(defaultProps.onSetAsDefault).toHaveBeenLastCalledWith(result);
221
- });
407
+ }); });
222
408
  });
223
409
  describe('download images', function () {
224
- afterEach(function () {
225
- jest.resetAllMocks();
226
- });
227
- it('should call download prop', function () {
228
- var component = setUp();
229
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
230
- act(function () {
231
- component.find(GalleryView).prop('onDownload')(id);
232
- });
233
- component.update();
234
- expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg']);
235
- });
236
- it('should call download prop for selected images', function () {
237
- var component = setUp();
238
- var id0 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
239
- var id1 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1';
240
- act(function () {
241
- component.find(GalleryView).prop('onSelectImage')(id0);
242
- });
243
- component.update();
244
- act(function () {
245
- component.find(GalleryView).prop('onSelectImage')(id1);
246
- });
247
- component.update();
248
- act(function () {
249
- var onDownload = component.find(HeaderRight).prop('onDownload');
250
- if (onDownload) {
251
- onDownload();
410
+ it('should call download prop for selected images', function () { return __awaiter(void 0, void 0, void 0, function () {
411
+ var user, images;
412
+ return __generator(this, function (_a) {
413
+ switch (_a.label) {
414
+ case 0:
415
+ user = setUp().user;
416
+ images = screen.getAllByRole('img');
417
+ images.forEach(function (image) {
418
+ fireEvent.load(image);
419
+ });
420
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
421
+ case 1:
422
+ _a.sent();
423
+ return [4 /*yield*/, user.click(screen.getByTestId('checked-button'))];
424
+ case 2:
425
+ _a.sent();
426
+ return [4 /*yield*/, user.click(screen.getAllByTestId('checked-button')[1])];
427
+ case 3:
428
+ _a.sent();
429
+ return [4 /*yield*/, user.click(screen.getByLabelText('Download selected items'))];
430
+ case 4:
431
+ _a.sent();
432
+ expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg', './image1.jpg']);
433
+ return [2 /*return*/];
252
434
  }
253
435
  });
254
- component.update();
255
- expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg', './image1.jpg']);
256
- });
257
- it('should call download prop for opened image in details mode', function () {
258
- var id0 = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0';
259
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: id0 });
260
- var component = setUp({ props: props });
261
- act(function () {
262
- var onDownload = component.find(HeaderRight).prop('onDownload');
263
- if (onDownload) {
264
- onDownload();
436
+ }); });
437
+ it('should call download prop for opened image in details mode', function () { return __awaiter(void 0, void 0, void 0, function () {
438
+ var user, images;
439
+ return __generator(this, function (_a) {
440
+ switch (_a.label) {
441
+ case 0:
442
+ user = setUp({
443
+ props: { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0' }
444
+ }).user;
445
+ images = screen.getAllByRole('img');
446
+ images.forEach(function (image) {
447
+ fireEvent.load(image);
448
+ });
449
+ return [4 /*yield*/, user.click(screen.getByLabelText('Download selected items'))];
450
+ case 1:
451
+ _a.sent();
452
+ expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg']);
453
+ return [2 /*return*/];
265
454
  }
266
455
  });
267
- expect(defaultProps.onDownload).toHaveBeenCalledWith(['./image0.jpg']);
268
- });
456
+ }); });
269
457
  });
270
458
  describe('deleting images', function () {
271
- it('should delete image in details mode', function () {
272
- var onDeleteAttribute = defaultProps.onDeleteAttribute;
273
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1' });
274
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
275
- var component = setUp({ props: props, mdmValues: mdmValues });
276
- act(function () {
277
- var onDelete = component.find(HeaderRight).prop('onDelete');
278
- if (onDelete) {
279
- onDelete();
459
+ it('should delete image in details mode', function () { return __awaiter(void 0, void 0, void 0, function () {
460
+ var user, images;
461
+ return __generator(this, function (_a) {
462
+ switch (_a.label) {
463
+ case 0:
464
+ user = setUp({
465
+ props: { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0' },
466
+ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing })
467
+ }).user;
468
+ images = screen.getAllByRole('img');
469
+ images.forEach(function (image) {
470
+ fireEvent.load(image);
471
+ });
472
+ return [4 /*yield*/, user.click(screen.getByLabelText('Delete selected items'))];
473
+ case 1:
474
+ _a.sent();
475
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
476
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0',
477
+ attributeType: defaultProps.attributeType
478
+ });
479
+ return [2 /*return*/];
280
480
  }
281
481
  });
282
- expect(onDeleteAttribute).toHaveBeenCalledWith({
283
- uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
284
- attributeType: defaultProps.attributeType
285
- });
286
- });
287
- it('should delete image in gallery mode', function () {
288
- var onDeleteAttribute = defaultProps.onDeleteAttribute;
289
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
290
- var component = setUp({ mdmValues: mdmValues });
291
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ';
292
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
293
- act(function () {
294
- component.find(GalleryView).prop('onSelectImage')("".concat(id, "1"));
295
- });
296
- component.update();
297
- expect(component.find(GalleryView).prop('selectedItems')).toEqual(["".concat(id, "1")]);
298
- act(function () {
299
- var onDelete = component.find(HeaderRight).prop('onDelete');
300
- if (onDelete) {
301
- onDelete();
482
+ }); });
483
+ it('should delete image in gallery mode', function () { return __awaiter(void 0, void 0, void 0, function () {
484
+ var user, images;
485
+ return __generator(this, function (_a) {
486
+ switch (_a.label) {
487
+ case 0:
488
+ user = setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing }) }).user;
489
+ images = screen.getAllByRole('img');
490
+ images.forEach(function (image) {
491
+ fireEvent.load(image);
492
+ });
493
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
494
+ case 1:
495
+ _a.sent();
496
+ return [4 /*yield*/, user.click(screen.getByTestId('image-overlay-actions'))];
497
+ case 2:
498
+ _a.sent();
499
+ return [4 /*yield*/, user.click(screen.getByText('Delete'))];
500
+ case 3:
501
+ _a.sent();
502
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
503
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0',
504
+ attributeType: defaultProps.attributeType
505
+ });
506
+ return [2 /*return*/];
302
507
  }
303
508
  });
304
- expect(onDeleteAttribute).toHaveBeenCalledWith({
305
- uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
306
- attributeType: defaultProps.attributeType
307
- });
308
- });
309
- it('should delete image in gallery mode by clicking onDelete at GalleryView', function () {
310
- var onDeleteAttribute = defaultProps.onDeleteAttribute;
311
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
312
- var component = setUp({ mdmValues: mdmValues });
313
- act(function () {
314
- var onDelete = component.find(GalleryView).prop('onDelete');
315
- onDelete('entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1');
316
- });
317
- expect(onDeleteAttribute).toHaveBeenCalledWith({
318
- uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
319
- attributeType: defaultProps.attributeType
509
+ }); });
510
+ it('should delete image in gallery mode by clicking onDelete at GalleryView', function () { return __awaiter(void 0, void 0, void 0, function () {
511
+ var user, images;
512
+ return __generator(this, function (_a) {
513
+ switch (_a.label) {
514
+ case 0:
515
+ user = setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing }) }).user;
516
+ images = screen.getAllByRole('img');
517
+ images.forEach(function (image) {
518
+ fireEvent.load(image);
519
+ });
520
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
521
+ case 1:
522
+ _a.sent();
523
+ return [4 /*yield*/, user.click(screen.getByTestId('checked-button'))];
524
+ case 2:
525
+ _a.sent();
526
+ return [4 /*yield*/, user.click(screen.getByLabelText('Delete selected items'))];
527
+ case 3:
528
+ _a.sent();
529
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
530
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0',
531
+ attributeType: defaultProps.attributeType
532
+ });
533
+ return [2 /*return*/];
534
+ }
320
535
  });
321
- });
322
- it('should delete few images in gallery mode', function () {
323
- var onDeleteAttribute = defaultProps.onDeleteAttribute;
324
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
325
- var component = setUp({ mdmValues: mdmValues });
326
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ';
327
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
328
- act(function () {
329
- component.find(GalleryView).prop('onSelectImage')("".concat(id, "1"));
330
- component.find(GalleryView).prop('onSelectImage')("".concat(id, "2"));
536
+ }); });
537
+ it('should delete few images in gallery mode', function () { return __awaiter(void 0, void 0, void 0, function () {
538
+ var user, images;
539
+ return __generator(this, function (_a) {
540
+ switch (_a.label) {
541
+ case 0:
542
+ user = setUp({ mdmValues: __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing }) }).user;
543
+ images = screen.getAllByRole('img');
544
+ images.forEach(function (image) {
545
+ fireEvent.load(image);
546
+ });
547
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
548
+ case 1:
549
+ _a.sent();
550
+ return [4 /*yield*/, user.click(screen.getByTestId('checked-button'))];
551
+ case 2:
552
+ _a.sent();
553
+ return [4 /*yield*/, user.click(screen.getByText('Select all images'))];
554
+ case 3:
555
+ _a.sent();
556
+ return [4 /*yield*/, user.click(screen.getByLabelText('Delete selected items'))];
557
+ case 4:
558
+ _a.sent();
559
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
560
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ0',
561
+ attributeType: defaultProps.attributeType
562
+ });
563
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
564
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
565
+ attributeType: defaultProps.attributeType
566
+ });
567
+ expect(defaultProps.onDeleteAttribute).toHaveBeenCalledWith({
568
+ uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ2',
569
+ attributeType: defaultProps.attributeType
570
+ });
571
+ return [2 /*return*/];
572
+ }
331
573
  });
332
- component.update();
333
- expect(component.find(GalleryView).prop('selectedItems')).toEqual(["".concat(id, "1"), "".concat(id, "2")]);
334
- act(function () {
335
- var onDelete = component.find(HeaderRight).prop('onDelete');
336
- onDelete('entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1');
574
+ }); });
575
+ });
576
+ describe('HeaderRight rendering cases', function () {
577
+ it('should show delete, download, copy link, upload buttons in details view', function () { return __awaiter(void 0, void 0, void 0, function () {
578
+ return __generator(this, function (_a) {
579
+ setUp({
580
+ mdmValues: { mode: Mode.Editing },
581
+ props: {
582
+ currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1'
583
+ }
584
+ });
585
+ expect(screen.getByLabelText('Delete selected items')).toBeInTheDocument();
586
+ expect(screen.getByLabelText('Download selected items')).toBeInTheDocument();
587
+ expect(screen.getByLabelText('Copy link')).toBeInTheDocument();
588
+ expect(screen.getByText('Upload')).toBeInTheDocument();
589
+ return [2 /*return*/];
337
590
  });
338
- expect(onDeleteAttribute).toHaveBeenCalledTimes(2);
339
- expect(onDeleteAttribute).toHaveBeenNthCalledWith(1, {
340
- uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
341
- attributeType: defaultProps.attributeType
591
+ }); });
592
+ it('should not show upload button in details view it onUpload is not defined', function () { return __awaiter(void 0, void 0, void 0, function () {
593
+ return __generator(this, function (_a) {
594
+ setUp({
595
+ mdmValues: { mode: Mode.Editing },
596
+ props: {
597
+ currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1',
598
+ onUpload: undefined
599
+ }
600
+ });
601
+ expect(screen.getByLabelText('Delete selected items')).toBeInTheDocument();
602
+ expect(screen.getByLabelText('Download selected items')).toBeInTheDocument();
603
+ expect(screen.getByLabelText('Copy link')).toBeInTheDocument();
604
+ expect(screen.queryByText('Upload')).not.toBeInTheDocument();
605
+ return [2 /*return*/];
342
606
  });
343
- expect(onDeleteAttribute).toHaveBeenNthCalledWith(2, {
344
- uri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ2',
345
- attributeType: defaultProps.attributeType
607
+ }); });
608
+ it('should show only download and delete button in Gallery mode with selected items and in edit mode', function () { return __awaiter(void 0, void 0, void 0, function () {
609
+ var user, images;
610
+ return __generator(this, function (_a) {
611
+ switch (_a.label) {
612
+ case 0:
613
+ user = setUp({ mdmValues: { mode: Mode.Editing } }).user;
614
+ images = screen.getAllByRole('img');
615
+ images.forEach(function (image) {
616
+ fireEvent.load(image);
617
+ });
618
+ return [4 /*yield*/, user.hover(screen.getAllByTestId('image-actions-overlay')[0])];
619
+ case 1:
620
+ _a.sent();
621
+ return [4 /*yield*/, user.click(screen.getByTestId('checked-button'))];
622
+ case 2:
623
+ _a.sent();
624
+ expect(screen.getByLabelText('Download selected items')).toBeInTheDocument();
625
+ expect(screen.getByLabelText('Delete selected items')).toBeInTheDocument();
626
+ expect(screen.queryByLabelText('Copy link')).not.toBeInTheDocument();
627
+ expect(screen.queryByText('Upload')).not.toBeInTheDocument();
628
+ return [2 /*return*/];
629
+ }
346
630
  });
631
+ }); });
632
+ it('should show only upload button in gallery edit mode without selected items', function () {
633
+ setUp({ mdmValues: { mode: Mode.Editing } });
634
+ expect(screen.queryByLabelText('Delete selected items')).not.toBeInTheDocument();
635
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
636
+ expect(screen.queryByLabelText('Copy link')).not.toBeInTheDocument();
637
+ expect(screen.getByText('Upload')).toBeInTheDocument();
347
638
  });
348
- });
349
- describe('HeaderRight rendering cases', function () {
350
- it('should provide onDelete, onDownload, onShare, onUpload to HeaderRight if Editing mode and Details mode', function () {
351
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1' });
352
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
353
- var component = setUp({ mdmValues: mdmValues, props: props });
354
- var headerRight = component.find(HeaderRight);
355
- expect(headerRight.prop('onDelete')).not.toBeUndefined();
356
- expect(headerRight.prop('onDownload')).not.toBeUndefined();
357
- expect(headerRight.prop('onShare')).not.toBeUndefined();
358
- expect(headerRight.prop('onUpload')).not.toBeUndefined();
639
+ it('should not show buttons in viewing mode with non selected items', function () {
640
+ setUp({ mdmValues: { mode: Mode.Viewing } });
641
+ expect(screen.queryByLabelText('Delete selected items')).not.toBeInTheDocument();
642
+ expect(screen.queryByLabelText('Download selected items')).not.toBeInTheDocument();
643
+ expect(screen.queryByLabelText('Copy link')).not.toBeInTheDocument();
644
+ expect(screen.queryByText('Upload')).not.toBeInTheDocument();
359
645
  });
360
- it('should provide onDelete, onDownload, onShare and not provide onUpload to HeaderRight if Editing mode and Details mode and onUpload is not defined', function () {
361
- var props = __assign(__assign({}, defaultProps), { onUpload: undefined, currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1' });
362
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
363
- var component = setUp({ mdmValues: mdmValues, props: props });
364
- var headerRight = component.find(HeaderRight);
365
- expect(headerRight.prop('onDelete')).not.toBeUndefined();
366
- expect(headerRight.prop('onDownload')).not.toBeUndefined();
367
- expect(headerRight.prop('onShare')).not.toBeUndefined();
368
- expect(headerRight.prop('onUpload')).toBeUndefined();
369
- });
370
- it('should provide onDelete and onDownload and not provide onShare, onUpload to HeaderRight if Editing mode and Gallery mode and selectedImages exist', function () {
371
- var id = 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ';
372
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
373
- var component = setUp({ mdmValues: mdmValues });
374
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
375
- act(function () {
376
- component.find(GalleryView).prop('onSelectImage')("".concat(id, "1"));
646
+ it('should show only copy link and download in details view for viewing mode', function () {
647
+ setUp({
648
+ mdmValues: { mode: Mode.Viewing },
649
+ props: {
650
+ currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1'
651
+ }
377
652
  });
378
- component.update();
379
- expect(component.find(GalleryView).prop('selectedItems')).toEqual(["".concat(id, "1")]);
380
- var headerRight = component.find(HeaderRight);
381
- expect(headerRight.prop('onDelete')).not.toBeUndefined();
382
- expect(headerRight.prop('onDownload')).not.toBeUndefined();
383
- expect(headerRight.prop('onShare')).toBeUndefined();
384
- expect(headerRight.prop('onUpload')).toBeUndefined();
385
- });
386
- it('should not provide onDelete, onDownload and onShare and provide onUpload to HeaderRight if Editing mode and Gallery mode and selectedImages do not exist', function () {
387
- var mdmValues = __assign(__assign({}, defaultMdmValues), { mode: Mode.Editing });
388
- var component = setUp({ mdmValues: mdmValues });
389
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
390
- var headerRight = component.find(HeaderRight);
391
- expect(headerRight.prop('onDelete')).toBeUndefined();
392
- expect(headerRight.prop('onDownload')).toBeUndefined();
393
- expect(headerRight.prop('onShare')).toBeUndefined();
394
- expect(headerRight.prop('onUpload')).not.toBeUndefined();
395
- });
396
- it('should not provide onDelete, onDownload, onUpload, onShare to HeaderRight if Viewing mode and Gallery mode and selectedImages do not exist', function () {
397
- var component = setUp();
398
- expect(component.find(GalleryView).prop('selectedItems')).toEqual([]);
399
- var headerRight = component.find(HeaderRight);
400
- expect(headerRight.prop('onDelete')).toBeUndefined();
401
- expect(headerRight.prop('onDownload')).toBeUndefined();
402
- expect(headerRight.prop('onShare')).toBeUndefined();
403
- expect(headerRight.prop('onUpload')).toBeUndefined();
404
- });
405
- it('should not provide onDelete, onUpload and provide onDownload, onShare to HeaderRight if Viewing mode and Details mode', function () {
406
- var props = __assign(__assign({}, defaultProps), { currentAttributeValueUri: 'entities/1Rd2I9Mt/attributes/ImageGallery/39V5GWJZ1' });
407
- var component = setUp({ props: props });
408
- var headerRight = component.find(HeaderRight);
409
- expect(headerRight.prop('onDelete')).toBeUndefined();
410
- expect(headerRight.prop('onDownload')).not.toBeUndefined();
411
- expect(headerRight.prop('onShare')).not.toBeUndefined();
412
- expect(headerRight.prop('onUpload')).toBeUndefined();
653
+ expect(screen.getByLabelText('Download selected items')).toBeInTheDocument();
654
+ expect(screen.getByLabelText('Copy link')).toBeInTheDocument();
655
+ expect(screen.queryByLabelText('Delete selected items')).not.toBeInTheDocument();
656
+ expect(screen.queryByText('Upload')).not.toBeInTheDocument();
413
657
  });
414
658
  });
415
659
  });