@scality/data-browser-library 1.0.0-preview.11

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 (256) hide show
  1. package/dist/components/Editor.d.ts +12 -0
  2. package/dist/components/Editor.js +28 -0
  3. package/dist/components/__tests__/BucketCreate.test.d.ts +1 -0
  4. package/dist/components/__tests__/BucketCreate.test.js +408 -0
  5. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +1 -0
  6. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +618 -0
  7. package/dist/components/__tests__/BucketLifecycleList.test.d.ts +1 -0
  8. package/dist/components/__tests__/BucketLifecycleList.test.js +325 -0
  9. package/dist/components/__tests__/BucketList.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketList.test.js +415 -0
  11. package/dist/components/__tests__/BucketNotificationCreatePage.test.d.ts +1 -0
  12. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +316 -0
  13. package/dist/components/__tests__/BucketOverview.test.d.ts +1 -0
  14. package/dist/components/__tests__/BucketOverview.test.js +769 -0
  15. package/dist/components/__tests__/BucketPolicyPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketPolicyPage.test.js +268 -0
  17. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketReplicationFormPage.test.js +1757 -0
  19. package/dist/components/__tests__/BucketReplicationList.test.d.ts +1 -0
  20. package/dist/components/__tests__/BucketReplicationList.test.js +344 -0
  21. package/dist/components/__tests__/CreateFolderButton.test.d.ts +1 -0
  22. package/dist/components/__tests__/CreateFolderButton.test.js +147 -0
  23. package/dist/components/__tests__/DeleteBucketButton.test.d.ts +1 -0
  24. package/dist/components/__tests__/DeleteBucketButton.test.js +272 -0
  25. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.d.ts +1 -0
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +196 -0
  27. package/dist/components/__tests__/DeleteObjectButton.test.d.ts +1 -0
  28. package/dist/components/__tests__/DeleteObjectButton.test.js +302 -0
  29. package/dist/components/__tests__/EmptyBucketButton.test.d.ts +1 -0
  30. package/dist/components/__tests__/EmptyBucketButton.test.js +302 -0
  31. package/dist/components/__tests__/MetadataSearch.test.d.ts +1 -0
  32. package/dist/components/__tests__/MetadataSearch.test.js +201 -0
  33. package/dist/components/__tests__/ObjectList.test.d.ts +1 -0
  34. package/dist/components/__tests__/ObjectList.test.js +283 -0
  35. package/dist/components/__tests__/UploadButton.test.d.ts +1 -0
  36. package/dist/components/__tests__/UploadButton.test.js +144 -0
  37. package/dist/components/buckets/BucketCreate.d.ts +49 -0
  38. package/dist/components/buckets/BucketCreate.js +237 -0
  39. package/dist/components/buckets/BucketDetails.d.ts +1 -0
  40. package/dist/components/buckets/BucketDetails.js +106 -0
  41. package/dist/components/buckets/BucketLifecycleFormPage.d.ts +15 -0
  42. package/dist/components/buckets/BucketLifecycleFormPage.js +1085 -0
  43. package/dist/components/buckets/BucketLifecycleList.d.ts +10 -0
  44. package/dist/components/buckets/BucketLifecycleList.js +270 -0
  45. package/dist/components/buckets/BucketList.d.ts +15 -0
  46. package/dist/components/buckets/BucketList.js +146 -0
  47. package/dist/components/buckets/BucketLocation.d.ts +3 -0
  48. package/dist/components/buckets/BucketLocation.js +16 -0
  49. package/dist/components/buckets/BucketOverview.d.ts +88 -0
  50. package/dist/components/buckets/BucketOverview.js +291 -0
  51. package/dist/components/buckets/BucketPage.d.ts +2 -0
  52. package/dist/components/buckets/BucketPage.js +47 -0
  53. package/dist/components/buckets/BucketPolicyButton.d.ts +7 -0
  54. package/dist/components/buckets/BucketPolicyButton.js +18 -0
  55. package/dist/components/buckets/BucketPolicyPage.d.ts +1 -0
  56. package/dist/components/buckets/BucketPolicyPage.js +236 -0
  57. package/dist/components/buckets/BucketReplicationFormPage.d.ts +1 -0
  58. package/dist/components/buckets/BucketReplicationFormPage.js +834 -0
  59. package/dist/components/buckets/BucketReplicationList.d.ts +11 -0
  60. package/dist/components/buckets/BucketReplicationList.js +189 -0
  61. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  62. package/dist/components/buckets/BucketVersioning.js +73 -0
  63. package/dist/components/buckets/DeleteBucketButton.d.ts +8 -0
  64. package/dist/components/buckets/DeleteBucketButton.js +78 -0
  65. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +18 -0
  66. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +53 -0
  67. package/dist/components/buckets/EmptyBucketButton.d.ts +5 -0
  68. package/dist/components/buckets/EmptyBucketButton.js +232 -0
  69. package/dist/components/buckets/EmptyBucketSummary.d.ts +9 -0
  70. package/dist/components/buckets/EmptyBucketSummary.js +60 -0
  71. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +13 -0
  72. package/dist/components/buckets/EmptyBucketSummaryList.js +140 -0
  73. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  74. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  75. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +1 -0
  76. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +234 -0
  77. package/dist/components/buckets/notifications/EventsSection.d.ts +1 -0
  78. package/dist/components/buckets/notifications/EventsSection.js +123 -0
  79. package/dist/components/buckets/notifications/events.d.ts +12 -0
  80. package/dist/components/buckets/notifications/events.js +27 -0
  81. package/dist/components/index.d.ts +21 -0
  82. package/dist/components/index.js +22 -0
  83. package/dist/components/layouts/ArrowNavigation.d.ts +4 -0
  84. package/dist/components/layouts/ArrowNavigation.js +16 -0
  85. package/dist/components/layouts/BrowserPageLayout.d.ts +12 -0
  86. package/dist/components/layouts/BrowserPageLayout.js +51 -0
  87. package/dist/components/objects/CreateFolderButton.d.ts +29 -0
  88. package/dist/components/objects/CreateFolderButton.js +118 -0
  89. package/dist/components/objects/DeleteObjectButton.d.ts +8 -0
  90. package/dist/components/objects/DeleteObjectButton.js +191 -0
  91. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -0
  92. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +356 -0
  93. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +3 -0
  94. package/dist/components/objects/ObjectDetails/ObjectSummary.js +241 -0
  95. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +3 -0
  96. package/dist/components/objects/ObjectDetails/ObjectTags.js +272 -0
  97. package/dist/components/objects/ObjectDetails/index.d.ts +9 -0
  98. package/dist/components/objects/ObjectDetails/index.js +75 -0
  99. package/dist/components/objects/ObjectList.d.ts +40 -0
  100. package/dist/components/objects/ObjectList.js +453 -0
  101. package/dist/components/objects/ObjectLock/EditRetentionButton.d.ts +4 -0
  102. package/dist/components/objects/ObjectLock/EditRetentionButton.js +32 -0
  103. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.d.ts +3 -0
  104. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +211 -0
  105. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +9 -0
  106. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +158 -0
  107. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +8 -0
  108. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +39 -0
  109. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.d.ts +1 -0
  110. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +204 -0
  111. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.d.ts +1 -0
  112. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +374 -0
  113. package/dist/components/objects/ObjectPage.d.ts +1 -0
  114. package/dist/components/objects/ObjectPage.js +45 -0
  115. package/dist/components/objects/UploadButton.d.ts +34 -0
  116. package/dist/components/objects/UploadButton.js +229 -0
  117. package/dist/components/providers/DataBrowserProvider.d.ts +20 -0
  118. package/dist/components/providers/DataBrowserProvider.js +42 -0
  119. package/dist/components/search/MetadataSearch.d.ts +5 -0
  120. package/dist/components/search/MetadataSearch.js +162 -0
  121. package/dist/components/search/SearchHints.d.ts +8 -0
  122. package/dist/components/search/SearchHints.js +21 -0
  123. package/dist/components/ui/ArrayFieldActions.d.ts +36 -0
  124. package/dist/components/ui/ArrayFieldActions.js +43 -0
  125. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +16 -0
  126. package/dist/components/ui/ConfirmDeleteRuleModal.js +43 -0
  127. package/dist/components/ui/DeleteObjectModalContent.d.ts +5 -0
  128. package/dist/components/ui/DeleteObjectModalContent.js +71 -0
  129. package/dist/components/ui/FilterFormSection.d.ts +44 -0
  130. package/dist/components/ui/FilterFormSection.js +159 -0
  131. package/dist/components/ui/Search.elements.d.ts +17 -0
  132. package/dist/components/ui/Search.elements.js +59 -0
  133. package/dist/components/ui/Table.elements.d.ts +36 -0
  134. package/dist/components/ui/Table.elements.js +87 -0
  135. package/dist/config/factory.d.ts +63 -0
  136. package/dist/config/factory.js +74 -0
  137. package/dist/config/types.d.ts +46 -0
  138. package/dist/config/types.js +0 -0
  139. package/dist/hooks/__tests__/useISVBucketDetection.test.d.ts +1 -0
  140. package/dist/hooks/__tests__/useISVBucketDetection.test.js +188 -0
  141. package/dist/hooks/__tests__/useIsBucketEmpty.test.d.ts +1 -0
  142. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +122 -0
  143. package/dist/hooks/bucketConfiguration.d.ts +168 -0
  144. package/dist/hooks/bucketConfiguration.js +67 -0
  145. package/dist/hooks/bucketOperations.d.ts +36 -0
  146. package/dist/hooks/bucketOperations.js +12 -0
  147. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.d.ts +1 -0
  148. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +276 -0
  149. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.d.ts +1 -0
  150. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +259 -0
  151. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.d.ts +1 -0
  152. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +166 -0
  153. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.d.ts +1 -0
  154. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +200 -0
  155. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.d.ts +1 -0
  156. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +179 -0
  157. package/dist/hooks/factories/index.d.ts +18 -0
  158. package/dist/hooks/factories/index.js +5 -0
  159. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +13 -0
  160. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +76 -0
  161. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +8 -0
  162. package/dist/hooks/factories/useCreateS3LoginHook.js +22 -0
  163. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +5 -0
  164. package/dist/hooks/factories/useCreateS3MutationHook.js +50 -0
  165. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +3 -0
  166. package/dist/hooks/factories/useCreateS3QueryHook.js +51 -0
  167. package/dist/hooks/index.d.ts +13 -0
  168. package/dist/hooks/index.js +13 -0
  169. package/dist/hooks/loginOperations.d.ts +21 -0
  170. package/dist/hooks/loginOperations.js +9 -0
  171. package/dist/hooks/objectOperations.d.ts +190 -0
  172. package/dist/hooks/objectOperations.js +67 -0
  173. package/dist/hooks/presignedOperations.d.ts +73 -0
  174. package/dist/hooks/presignedOperations.js +72 -0
  175. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  176. package/dist/hooks/useBatchObjectLegalHold.js +45 -0
  177. package/dist/hooks/useDeleteBucketConfigRule.d.ts +26 -0
  178. package/dist/hooks/useDeleteBucketConfigRule.js +46 -0
  179. package/dist/hooks/useEmptyBucket.d.ts +27 -0
  180. package/dist/hooks/useEmptyBucket.js +116 -0
  181. package/dist/hooks/useISVBucketDetection.d.ts +15 -0
  182. package/dist/hooks/useISVBucketDetection.js +27 -0
  183. package/dist/hooks/useIsBucketEmpty.d.ts +7 -0
  184. package/dist/hooks/useIsBucketEmpty.js +36 -0
  185. package/dist/hooks/useLoginMutation.d.ts +21 -0
  186. package/dist/hooks/useLoginMutation.js +9 -0
  187. package/dist/hooks/useS3Client.d.ts +1 -0
  188. package/dist/hooks/useS3Client.js +13 -0
  189. package/dist/hooks/useTableRowSelection.d.ts +9 -0
  190. package/dist/hooks/useTableRowSelection.js +45 -0
  191. package/dist/index.d.ts +6 -0
  192. package/dist/index.js +6 -0
  193. package/dist/schemas/bucketPolicySchema.json +321 -0
  194. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -0
  195. package/dist/test/msw/handlers/deleteBucket.js +14 -0
  196. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -0
  197. package/dist/test/msw/handlers/getBucketAcl.js +96 -0
  198. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -0
  199. package/dist/test/msw/handlers/getBucketLocation.js +23 -0
  200. package/dist/test/msw/handlers/getBucketPolicy.d.ts +11 -0
  201. package/dist/test/msw/handlers/getBucketPolicy.js +72 -0
  202. package/dist/test/msw/handlers/headObject.d.ts +1 -0
  203. package/dist/test/msw/handlers/headObject.js +17 -0
  204. package/dist/test/msw/handlers/listBuckets.d.ts +1 -0
  205. package/dist/test/msw/handlers/listBuckets.js +24 -0
  206. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -0
  207. package/dist/test/msw/handlers/listObjectVersions.js +83 -0
  208. package/dist/test/msw/handlers/listObjects.d.ts +1 -0
  209. package/dist/test/msw/handlers/listObjects.js +66 -0
  210. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -0
  211. package/dist/test/msw/handlers/objectLegalHold.js +24 -0
  212. package/dist/test/msw/handlers/objectRetention.d.ts +1 -0
  213. package/dist/test/msw/handlers/objectRetention.js +27 -0
  214. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -0
  215. package/dist/test/msw/handlers/putBucketAcl.js +18 -0
  216. package/dist/test/msw/handlers/putObject.d.ts +1 -0
  217. package/dist/test/msw/handlers/putObject.js +16 -0
  218. package/dist/test/msw/handlers.d.ts +4 -0
  219. package/dist/test/msw/handlers.js +109 -0
  220. package/dist/test/msw/index.d.ts +2 -0
  221. package/dist/test/msw/index.js +3 -0
  222. package/dist/test/msw/server.d.ts +4 -0
  223. package/dist/test/msw/server.js +20 -0
  224. package/dist/test/msw/utils.d.ts +2 -0
  225. package/dist/test/msw/utils.js +13 -0
  226. package/dist/test/setup.d.ts +1 -0
  227. package/dist/test/setup.js +90 -0
  228. package/dist/test/testUtils.d.ts +181 -0
  229. package/dist/test/testUtils.js +310 -0
  230. package/dist/test/utils/errorHandling.test.d.ts +1 -0
  231. package/dist/test/utils/errorHandling.test.js +423 -0
  232. package/dist/types/index.d.ts +51 -0
  233. package/dist/types/index.js +0 -0
  234. package/dist/utils/constants.d.ts +12 -0
  235. package/dist/utils/constants.js +9 -0
  236. package/dist/utils/deletion/index.d.ts +2 -0
  237. package/dist/utils/deletion/index.js +2 -0
  238. package/dist/utils/deletion/messages.d.ts +5 -0
  239. package/dist/utils/deletion/messages.js +29 -0
  240. package/dist/utils/deletion/types.d.ts +11 -0
  241. package/dist/utils/deletion/types.js +0 -0
  242. package/dist/utils/errorHandling.d.ts +63 -0
  243. package/dist/utils/errorHandling.js +84 -0
  244. package/dist/utils/hooks.d.ts +2 -0
  245. package/dist/utils/hooks.js +26 -0
  246. package/dist/utils/index.d.ts +4 -0
  247. package/dist/utils/index.js +4 -0
  248. package/dist/utils/proxyMiddleware.d.ts +18 -0
  249. package/dist/utils/proxyMiddleware.js +56 -0
  250. package/dist/utils/s3Client.d.ts +5 -0
  251. package/dist/utils/s3Client.js +36 -0
  252. package/dist/utils/s3RuleUtils.d.ts +53 -0
  253. package/dist/utils/s3RuleUtils.js +101 -0
  254. package/dist/utils/useFeatures.d.ts +1 -0
  255. package/dist/utils/useFeatures.js +7 -0
  256. package/package.json +84 -0
@@ -0,0 +1,769 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE_react_router_dom_5358f3fe__ from "react-router-dom";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { fireEvent, render, screen } from "@testing-library/react";
4
+ import { useGetBucketAcl, useGetBucketCors, useGetBucketLocation, useGetBucketObjectLockConfiguration, useGetBucketPolicy, useGetBucketTagging, useGetBucketVersioning, useISVBucketStatus } from "../../hooks/index.js";
5
+ import { createTestWrapper } from "../../test/testUtils.js";
6
+ import { BucketOverview } from "../buckets/BucketOverview.js";
7
+ import { useFeatures } from "../../utils/useFeatures.js";
8
+ var __webpack_modules__ = {
9
+ "react-router-dom": function(module) {
10
+ module.exports = __WEBPACK_EXTERNAL_MODULE_react_router_dom_5358f3fe__;
11
+ }
12
+ };
13
+ var __webpack_module_cache__ = {};
14
+ function __webpack_require__(moduleId) {
15
+ var cachedModule = __webpack_module_cache__[moduleId];
16
+ if (void 0 !== cachedModule) return cachedModule.exports;
17
+ var module = __webpack_module_cache__[moduleId] = {
18
+ exports: {}
19
+ };
20
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
21
+ return module.exports;
22
+ }
23
+ var external_react_router_dom_ = __webpack_require__("react-router-dom");
24
+ jest.mock("../../hooks");
25
+ jest.mock("../../utils/useFeatures");
26
+ jest.mock("react-router-dom", ()=>({
27
+ ...jest.requireActual("react-router-dom"),
28
+ useNavigate: jest.fn()
29
+ }));
30
+ const mockUseGetBucketVersioning = jest.mocked(useGetBucketVersioning);
31
+ const mockUseGetBucketAcl = jest.mocked(useGetBucketAcl);
32
+ const mockUseGetBucketLocation = jest.mocked(useGetBucketLocation);
33
+ const mockUseGetBucketCors = jest.mocked(useGetBucketCors);
34
+ const mockUseGetBucketObjectLockConfiguration = jest.mocked(useGetBucketObjectLockConfiguration);
35
+ const mockUseGetBucketPolicy = jest.mocked(useGetBucketPolicy);
36
+ const mockUseGetBucketTagging = jest.mocked(useGetBucketTagging);
37
+ const mockUseISVBucketStatus = jest.mocked(useISVBucketStatus);
38
+ const mockUseFeatures = jest.mocked(useFeatures);
39
+ const renderBucketOverview = (props = {})=>{
40
+ const { bucketName = "test-bucket", onEmptyBucket, onDeleteBucket, onEditPolicy, renderEmptyButton, renderDeleteButton, isEmptyBucketDisabled, isDeleteBucketDisabled } = props;
41
+ const Wrapper = createTestWrapper();
42
+ const mockNavigate = jest.fn();
43
+ __webpack_require__("react-router-dom").useNavigate.mockReturnValue(mockNavigate);
44
+ return render(/*#__PURE__*/ jsx(external_react_router_dom_.MemoryRouter, {
45
+ children: /*#__PURE__*/ jsx(Wrapper, {
46
+ children: /*#__PURE__*/ jsxs(BucketOverview, {
47
+ bucketName: bucketName,
48
+ children: [
49
+ /*#__PURE__*/ jsx(BucketOverview.Actions, {
50
+ onEmptyBucket: onEmptyBucket,
51
+ onDeleteBucket: onDeleteBucket,
52
+ renderEmptyButton: renderEmptyButton,
53
+ renderDeleteButton: renderDeleteButton,
54
+ isEmptyBucketDisabled: isEmptyBucketDisabled,
55
+ isDeleteBucketDisabled: isDeleteBucketDisabled
56
+ }),
57
+ /*#__PURE__*/ jsxs(BucketOverview.Sections, {
58
+ children: [
59
+ /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {}),
60
+ /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
61
+ /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {
62
+ onEditPolicy: onEditPolicy
63
+ })
64
+ ]
65
+ })
66
+ ]
67
+ })
68
+ })
69
+ }));
70
+ };
71
+ const mockHookDefaults = ()=>{
72
+ mockUseGetBucketVersioning.mockReturnValue({
73
+ data: {
74
+ Status: "Enabled"
75
+ },
76
+ status: "success"
77
+ });
78
+ mockUseGetBucketAcl.mockReturnValue({
79
+ data: {
80
+ Owner: {
81
+ DisplayName: "test-owner"
82
+ },
83
+ Grants: [
84
+ {
85
+ Grantee: {
86
+ DisplayName: "test-grantee"
87
+ }
88
+ }
89
+ ]
90
+ },
91
+ status: "success"
92
+ });
93
+ mockUseGetBucketLocation.mockReturnValue({
94
+ data: {
95
+ LocationConstraint: "us-west-2"
96
+ },
97
+ status: "success"
98
+ });
99
+ mockUseGetBucketCors.mockReturnValue({
100
+ data: {
101
+ CORSRules: []
102
+ },
103
+ status: "success"
104
+ });
105
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
106
+ data: {
107
+ ObjectLockConfiguration: {
108
+ ObjectLockEnabled: "Disabled"
109
+ }
110
+ },
111
+ status: "success"
112
+ });
113
+ mockUseGetBucketPolicy.mockReturnValue({
114
+ data: void 0,
115
+ error: null,
116
+ status: "success"
117
+ });
118
+ mockUseGetBucketTagging.mockReturnValue({
119
+ data: {
120
+ TagSet: []
121
+ },
122
+ status: "success"
123
+ });
124
+ mockUseISVBucketStatus.mockReturnValue({
125
+ isVeeamBucket: false,
126
+ isCommvaultBucket: false,
127
+ isISVManaged: false,
128
+ isvApplication: void 0,
129
+ isLoading: false,
130
+ bucketTagsStatus: "success"
131
+ });
132
+ mockUseFeatures.mockReturnValue(false);
133
+ };
134
+ describe("BucketOverview", ()=>{
135
+ beforeEach(()=>{
136
+ jest.clearAllMocks();
137
+ mockHookDefaults();
138
+ });
139
+ it("renders bucket overview with all sections", ()=>{
140
+ renderBucketOverview();
141
+ expect(screen.getByText("General")).toBeInTheDocument();
142
+ expect(screen.getByText("Data protection")).toBeInTheDocument();
143
+ expect(screen.getByText("Permissions")).toBeInTheDocument();
144
+ });
145
+ it("displays bucket name correctly", ()=>{
146
+ renderBucketOverview({
147
+ bucketName: "my-test-bucket"
148
+ });
149
+ expect(screen.getByText("my-test-bucket")).toBeInTheDocument();
150
+ });
151
+ it("shows versioning status when enabled", ()=>{
152
+ mockUseGetBucketVersioning.mockReturnValue({
153
+ data: {
154
+ Status: "Enabled"
155
+ },
156
+ status: "success"
157
+ });
158
+ renderBucketOverview();
159
+ expect(screen.getByText("Active")).toBeInTheDocument();
160
+ });
161
+ it("shows versioning status when disabled", ()=>{
162
+ mockUseGetBucketVersioning.mockReturnValue({
163
+ data: {
164
+ Status: "Suspended"
165
+ },
166
+ status: "success"
167
+ });
168
+ renderBucketOverview();
169
+ expect(screen.getByText("Inactive")).toBeInTheDocument();
170
+ });
171
+ it("displays bucket location", ()=>{
172
+ mockUseGetBucketLocation.mockReturnValue({
173
+ data: {
174
+ LocationConstraint: "eu-west-1"
175
+ },
176
+ status: "success"
177
+ });
178
+ renderBucketOverview();
179
+ expect(screen.getByText("eu-west-1")).toBeInTheDocument();
180
+ });
181
+ it("shows default location when LocationConstraint is null", ()=>{
182
+ mockUseGetBucketLocation.mockReturnValue({
183
+ data: {
184
+ LocationConstraint: null
185
+ },
186
+ status: "success"
187
+ });
188
+ renderBucketOverview();
189
+ expect(screen.getByText("us-east-1")).toBeInTheDocument();
190
+ });
191
+ it("shows object-lock enabled status", ()=>{
192
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
193
+ data: {
194
+ ObjectLockConfiguration: {
195
+ ObjectLockEnabled: "Enabled"
196
+ }
197
+ },
198
+ status: "success"
199
+ });
200
+ renderBucketOverview();
201
+ expect(screen.getByText("Enabled")).toBeInTheDocument();
202
+ });
203
+ it("shows object-lock disabled status", ()=>{
204
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
205
+ data: {
206
+ ObjectLockConfiguration: {
207
+ ObjectLockEnabled: "Disabled"
208
+ }
209
+ },
210
+ status: "success"
211
+ });
212
+ renderBucketOverview();
213
+ expect(screen.getByText("Disabled")).toBeInTheDocument();
214
+ });
215
+ it("shows default retention as Inactive when not configured", ()=>{
216
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
217
+ data: {
218
+ ObjectLockConfiguration: {
219
+ ObjectLockEnabled: "Enabled"
220
+ }
221
+ },
222
+ status: "success"
223
+ });
224
+ renderBucketOverview();
225
+ expect(screen.getByText("Inactive")).toBeInTheDocument();
226
+ });
227
+ it("shows default retention with days in Governance mode", ()=>{
228
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
229
+ data: {
230
+ ObjectLockConfiguration: {
231
+ ObjectLockEnabled: "Enabled",
232
+ Rule: {
233
+ DefaultRetention: {
234
+ Mode: "GOVERNANCE",
235
+ Days: 30
236
+ }
237
+ }
238
+ }
239
+ },
240
+ status: "success"
241
+ });
242
+ renderBucketOverview();
243
+ expect(screen.getByText("Governance - 30 days")).toBeInTheDocument();
244
+ });
245
+ it("shows default retention with single day", ()=>{
246
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
247
+ data: {
248
+ ObjectLockConfiguration: {
249
+ ObjectLockEnabled: "Enabled",
250
+ Rule: {
251
+ DefaultRetention: {
252
+ Mode: "COMPLIANCE",
253
+ Days: 1
254
+ }
255
+ }
256
+ }
257
+ },
258
+ status: "success"
259
+ });
260
+ renderBucketOverview();
261
+ expect(screen.getByText("Compliance - 1 day")).toBeInTheDocument();
262
+ });
263
+ it("shows default retention with years in Compliance mode", ()=>{
264
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
265
+ data: {
266
+ ObjectLockConfiguration: {
267
+ ObjectLockEnabled: "Enabled",
268
+ Rule: {
269
+ DefaultRetention: {
270
+ Mode: "COMPLIANCE",
271
+ Years: 7
272
+ }
273
+ }
274
+ }
275
+ },
276
+ status: "success"
277
+ });
278
+ renderBucketOverview();
279
+ expect(screen.getByText("Compliance - 7 years")).toBeInTheDocument();
280
+ });
281
+ it("shows default retention with single year", ()=>{
282
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
283
+ data: {
284
+ ObjectLockConfiguration: {
285
+ ObjectLockEnabled: "Enabled",
286
+ Rule: {
287
+ DefaultRetention: {
288
+ Mode: "GOVERNANCE",
289
+ Years: 1
290
+ }
291
+ }
292
+ }
293
+ },
294
+ status: "success"
295
+ });
296
+ renderBucketOverview();
297
+ expect(screen.getByText("Governance - 1 year")).toBeInTheDocument();
298
+ });
299
+ it("shows edit retention button when object lock is enabled", ()=>{
300
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
301
+ data: {
302
+ ObjectLockConfiguration: {
303
+ ObjectLockEnabled: "Enabled",
304
+ Rule: {
305
+ DefaultRetention: {
306
+ Mode: "GOVERNANCE",
307
+ Days: 30
308
+ }
309
+ }
310
+ }
311
+ },
312
+ status: "success"
313
+ });
314
+ renderBucketOverview();
315
+ const editButton = screen.getByRole("button", {
316
+ name: /edit default retention/i
317
+ });
318
+ expect(editButton).toBeInTheDocument();
319
+ });
320
+ it("does not show edit retention button when object lock is disabled", ()=>{
321
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
322
+ data: {
323
+ ObjectLockConfiguration: {
324
+ ObjectLockEnabled: "Disabled"
325
+ }
326
+ },
327
+ status: "success"
328
+ });
329
+ renderBucketOverview();
330
+ const editButton = screen.queryByRole("button", {
331
+ name: /edit default retention/i
332
+ });
333
+ expect(editButton).not.toBeInTheDocument();
334
+ });
335
+ it("displays bucket owner from ACL", ()=>{
336
+ mockUseGetBucketAcl.mockReturnValue({
337
+ data: {
338
+ Owner: {
339
+ DisplayName: "bucket-owner"
340
+ },
341
+ Grants: []
342
+ },
343
+ status: "success"
344
+ });
345
+ renderBucketOverview();
346
+ expect(screen.getByText("bucket-owner")).toBeInTheDocument();
347
+ });
348
+ it("shows ACL grantees count", ()=>{
349
+ mockUseGetBucketAcl.mockReturnValue({
350
+ data: {
351
+ Owner: {
352
+ DisplayName: "owner"
353
+ },
354
+ Grants: [
355
+ {
356
+ Grantee: {
357
+ DisplayName: "user1"
358
+ }
359
+ },
360
+ {
361
+ Grantee: {
362
+ DisplayName: "user2"
363
+ }
364
+ },
365
+ {
366
+ Grantee: {
367
+ DisplayName: "user3"
368
+ }
369
+ }
370
+ ]
371
+ },
372
+ status: "success"
373
+ });
374
+ renderBucketOverview();
375
+ expect(screen.getByText("3 Grantees")).toBeInTheDocument();
376
+ });
377
+ it("shows single grantee without plural", ()=>{
378
+ mockUseGetBucketAcl.mockReturnValue({
379
+ data: {
380
+ Owner: {
381
+ DisplayName: "owner"
382
+ },
383
+ Grants: [
384
+ {
385
+ Grantee: {
386
+ DisplayName: "user1"
387
+ }
388
+ }
389
+ ]
390
+ },
391
+ status: "success"
392
+ });
393
+ renderBucketOverview();
394
+ expect(screen.getByText("1 Grantee")).toBeInTheDocument();
395
+ });
396
+ it("shows CORS enabled when rules exist", ()=>{
397
+ mockUseGetBucketCors.mockReturnValue({
398
+ data: {
399
+ CORSRules: [
400
+ {
401
+ AllowedMethods: [
402
+ "GET"
403
+ ],
404
+ AllowedOrigins: [
405
+ "*"
406
+ ]
407
+ }
408
+ ]
409
+ },
410
+ status: "success"
411
+ });
412
+ renderBucketOverview();
413
+ expect(screen.getByText("Yes")).toBeInTheDocument();
414
+ });
415
+ it("shows CORS disabled when no rules exist", ()=>{
416
+ mockUseGetBucketCors.mockReturnValue({
417
+ data: {
418
+ CORSRules: []
419
+ },
420
+ status: "success"
421
+ });
422
+ renderBucketOverview();
423
+ const corsValues = screen.getAllByText("No");
424
+ expect(corsValues.length).toBeGreaterThan(0);
425
+ });
426
+ it("detects public bucket from ACL grants", ()=>{
427
+ mockUseGetBucketAcl.mockReturnValue({
428
+ data: {
429
+ Owner: {
430
+ DisplayName: "owner"
431
+ },
432
+ Grants: [
433
+ {
434
+ Grantee: {
435
+ URI: "http://acs.amazonaws.com/groups/global/AllUsers"
436
+ },
437
+ Permission: "READ"
438
+ }
439
+ ]
440
+ },
441
+ status: "success"
442
+ });
443
+ renderBucketOverview();
444
+ expect(screen.getByText("Yes")).toBeInTheDocument();
445
+ });
446
+ it("shows non-public bucket when no public grants", ()=>{
447
+ mockUseGetBucketAcl.mockReturnValue({
448
+ data: {
449
+ Owner: {
450
+ DisplayName: "owner"
451
+ },
452
+ Grants: [
453
+ {
454
+ Grantee: {
455
+ DisplayName: "private-user"
456
+ },
457
+ Permission: "READ"
458
+ }
459
+ ]
460
+ },
461
+ status: "success"
462
+ });
463
+ renderBucketOverview();
464
+ const publicValues = screen.getAllByText("No");
465
+ expect(publicValues.length).toBeGreaterThan(0);
466
+ });
467
+ it("shows loading states while data is being fetched", ()=>{
468
+ mockUseGetBucketVersioning.mockReturnValue({
469
+ data: void 0,
470
+ status: "pending"
471
+ });
472
+ mockUseGetBucketAcl.mockReturnValue({
473
+ data: void 0,
474
+ status: "pending"
475
+ });
476
+ renderBucketOverview();
477
+ const loaders = document.querySelectorAll('[data-testid="loader"], .loader, [class*="loader"]');
478
+ expect(loaders.length).toBeGreaterThan(0);
479
+ });
480
+ it("shows error states when API calls fail", ()=>{
481
+ mockUseGetBucketVersioning.mockReturnValue({
482
+ data: void 0,
483
+ status: "error"
484
+ });
485
+ mockUseGetBucketLocation.mockReturnValue({
486
+ data: void 0,
487
+ status: "error"
488
+ });
489
+ renderBucketOverview();
490
+ const errorElements = screen.getAllByText("Error");
491
+ expect(errorElements.length).toBeGreaterThan(0);
492
+ });
493
+ it("handles empty bucket button click", ()=>{
494
+ const onEmptyBucket = jest.fn();
495
+ renderBucketOverview({
496
+ onEmptyBucket,
497
+ isEmptyBucketDisabled: false
498
+ });
499
+ const emptyButton = screen.getByRole("button", {
500
+ name: /empty bucket/i
501
+ });
502
+ fireEvent.click(emptyButton);
503
+ expect(onEmptyBucket).toHaveBeenCalled();
504
+ });
505
+ it("handles delete bucket button click", ()=>{
506
+ const onDeleteBucket = jest.fn();
507
+ renderBucketOverview({
508
+ onDeleteBucket
509
+ });
510
+ const deleteButton = screen.getByRole("button", {
511
+ name: /delete bucket/i
512
+ });
513
+ fireEvent.click(deleteButton);
514
+ expect(onDeleteBucket).toHaveBeenCalled();
515
+ });
516
+ it("disables empty button when specified", ()=>{
517
+ renderBucketOverview({
518
+ isEmptyBucketDisabled: true
519
+ });
520
+ const emptyButton = screen.getByRole("button", {
521
+ name: /empty bucket/i
522
+ });
523
+ expect(emptyButton).toBeDisabled();
524
+ });
525
+ it("disables delete button when specified", ()=>{
526
+ renderBucketOverview({
527
+ isDeleteBucketDisabled: true
528
+ });
529
+ const deleteButton = screen.getByRole("button", {
530
+ name: /delete bucket/i
531
+ });
532
+ expect(deleteButton).toBeDisabled();
533
+ });
534
+ it("renders custom empty button when provided", ()=>{
535
+ const renderEmptyButton = jest.fn(()=>/*#__PURE__*/ jsx("button", {
536
+ children: "Custom Empty Button"
537
+ }));
538
+ renderBucketOverview({
539
+ renderEmptyButton
540
+ });
541
+ expect(screen.getByText("Custom Empty Button")).toBeInTheDocument();
542
+ expect(renderEmptyButton).toHaveBeenCalledWith("test-bucket");
543
+ });
544
+ it("renders custom delete button when provided", ()=>{
545
+ const renderDeleteButton = jest.fn(()=>/*#__PURE__*/ jsx("button", {
546
+ children: "Custom Delete Button"
547
+ }));
548
+ renderBucketOverview({
549
+ renderDeleteButton
550
+ });
551
+ expect(screen.getByText("Custom Delete Button")).toBeInTheDocument();
552
+ expect(renderDeleteButton).toHaveBeenCalledWith("test-bucket");
553
+ });
554
+ it("works when no callbacks are provided", ()=>{
555
+ expect(()=>{
556
+ renderBucketOverview();
557
+ const emptyButton = screen.getByRole("button", {
558
+ name: /empty bucket/i
559
+ });
560
+ const deleteButton = screen.getByRole("button", {
561
+ name: /delete bucket/i
562
+ });
563
+ fireEvent.click(emptyButton);
564
+ fireEvent.click(deleteButton);
565
+ }).not.toThrow();
566
+ });
567
+ it("handles missing ACL data gracefully", ()=>{
568
+ mockUseGetBucketAcl.mockReturnValue({
569
+ data: void 0,
570
+ status: "success"
571
+ });
572
+ renderBucketOverview();
573
+ const naElements = screen.getAllByText("N/A");
574
+ expect(naElements.length).toBeGreaterThan(0);
575
+ });
576
+ it("handles missing versioning data gracefully", ()=>{
577
+ mockUseGetBucketVersioning.mockReturnValue({
578
+ data: void 0,
579
+ status: "success"
580
+ });
581
+ renderBucketOverview();
582
+ expect(screen.getByText("Inactive")).toBeInTheDocument();
583
+ });
584
+ it("handles CORS error state", ()=>{
585
+ mockUseGetBucketCors.mockReturnValue({
586
+ data: void 0,
587
+ status: "error"
588
+ });
589
+ renderBucketOverview();
590
+ const corsValues = screen.getAllByText("No");
591
+ expect(corsValues.length).toBeGreaterThan(0);
592
+ });
593
+ it("handles object lock error state (404 - not configured)", ()=>{
594
+ const notFoundError = new Error("Object Lock configuration does not exist");
595
+ notFoundError.name = "NoSuchBucketObjectLockConfiguration";
596
+ notFoundError.$metadata = {
597
+ httpStatusCode: 404
598
+ };
599
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
600
+ data: void 0,
601
+ status: "error",
602
+ error: notFoundError
603
+ });
604
+ renderBucketOverview();
605
+ expect(screen.getByText("Disabled")).toBeInTheDocument();
606
+ });
607
+ it("handles object lock real error state (non-404)", ()=>{
608
+ const accessDeniedError = new Error("Access Denied");
609
+ accessDeniedError.name = "AccessDenied";
610
+ accessDeniedError.$metadata = {
611
+ httpStatusCode: 403
612
+ };
613
+ mockUseGetBucketObjectLockConfiguration.mockReturnValue({
614
+ data: void 0,
615
+ status: "error",
616
+ error: accessDeniedError
617
+ });
618
+ renderBucketOverview();
619
+ expect(screen.getByText("Error")).toBeInTheDocument();
620
+ });
621
+ describe("Bucket Policy", ()=>{
622
+ it("shows 'Configured' when policy exists", ()=>{
623
+ mockUseGetBucketPolicy.mockReturnValue({
624
+ data: {
625
+ Policy: '{"Version":"2012-10-17","Statement":[]}'
626
+ },
627
+ error: null,
628
+ status: "success"
629
+ });
630
+ renderBucketOverview();
631
+ expect(screen.getByText("Configured")).toBeInTheDocument();
632
+ });
633
+ it("shows 'Not configured' when no policy exists", ()=>{
634
+ mockUseGetBucketPolicy.mockReturnValue({
635
+ data: void 0,
636
+ error: null,
637
+ status: "success"
638
+ });
639
+ renderBucketOverview();
640
+ expect(screen.getByText("Not configured")).toBeInTheDocument();
641
+ });
642
+ it("shows 'Error' when policy fetch fails with non-NoSuchBucketPolicy error", ()=>{
643
+ const genericError = new Error("Network error");
644
+ mockUseGetBucketPolicy.mockReturnValue({
645
+ data: void 0,
646
+ error: genericError,
647
+ status: "error"
648
+ });
649
+ renderBucketOverview();
650
+ const errorElements = screen.getAllByText("Error");
651
+ expect(errorElements.length).toBeGreaterThan(0);
652
+ });
653
+ it("shows 'Not configured' when policy does not exist (NoSuchBucketPolicy)", ()=>{
654
+ const noSuchPolicyError = new Error("Policy does not exist");
655
+ noSuchPolicyError.name = "NoSuchBucketPolicy";
656
+ mockUseGetBucketPolicy.mockReturnValue({
657
+ data: void 0,
658
+ error: noSuchPolicyError,
659
+ status: "error"
660
+ });
661
+ renderBucketOverview();
662
+ expect(screen.getByText("Not configured")).toBeInTheDocument();
663
+ });
664
+ it("calls onEditPolicy when edit button is clicked", ()=>{
665
+ const onEditPolicy = jest.fn();
666
+ mockUseGetBucketPolicy.mockReturnValue({
667
+ data: {
668
+ Policy: '{"Version":"2012-10-17","Statement":[]}'
669
+ },
670
+ error: null,
671
+ status: "success"
672
+ });
673
+ renderBucketOverview({
674
+ onEditPolicy
675
+ });
676
+ const editButton = screen.getByRole("button", {
677
+ name: /edit/i
678
+ });
679
+ fireEvent.click(editButton);
680
+ expect(onEditPolicy).toHaveBeenCalledWith("test-bucket");
681
+ });
682
+ });
683
+ describe("Field Overrides", ()=>{
684
+ it("renders slot-based field override", ()=>{
685
+ const Wrapper = createTestWrapper();
686
+ render(/*#__PURE__*/ jsx(external_react_router_dom_.MemoryRouter, {
687
+ children: /*#__PURE__*/ jsx(Wrapper, {
688
+ children: /*#__PURE__*/ jsxs(BucketOverview, {
689
+ bucketName: "test-bucket",
690
+ children: [
691
+ /*#__PURE__*/ jsx(BucketOverview.Actions, {}),
692
+ /*#__PURE__*/ jsxs(BucketOverview.Sections, {
693
+ children: [
694
+ /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {
695
+ locationField: /*#__PURE__*/ jsx("span", {
696
+ children: "Custom Location Content"
697
+ })
698
+ }),
699
+ /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
700
+ /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {})
701
+ ]
702
+ })
703
+ ]
704
+ })
705
+ })
706
+ }));
707
+ expect(screen.getByText("Custom Location Content")).toBeInTheDocument();
708
+ expect(screen.getByText("test-bucket")).toBeInTheDocument();
709
+ });
710
+ it("renders render prop field override", ()=>{
711
+ const Wrapper = createTestWrapper();
712
+ render(/*#__PURE__*/ jsx(external_react_router_dom_.MemoryRouter, {
713
+ children: /*#__PURE__*/ jsx(Wrapper, {
714
+ children: /*#__PURE__*/ jsxs(BucketOverview, {
715
+ bucketName: "test-bucket",
716
+ children: [
717
+ /*#__PURE__*/ jsx(BucketOverview.Actions, {}),
718
+ /*#__PURE__*/ jsxs(BucketOverview.Sections, {
719
+ children: [
720
+ /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {
721
+ renderVersioning: (name)=>/*#__PURE__*/ jsxs("span", {
722
+ children: [
723
+ "Custom Versioning for ",
724
+ name
725
+ ]
726
+ })
727
+ }),
728
+ /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
729
+ /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {})
730
+ ]
731
+ })
732
+ ]
733
+ })
734
+ })
735
+ }));
736
+ expect(screen.getByText("Custom Versioning for test-bucket")).toBeInTheDocument();
737
+ });
738
+ it("prioritizes slot prop over render prop over default", ()=>{
739
+ const Wrapper = createTestWrapper();
740
+ const renderName = jest.fn(()=>/*#__PURE__*/ jsx("span", {
741
+ children: "Render Prop Name"
742
+ }));
743
+ render(/*#__PURE__*/ jsx(external_react_router_dom_.MemoryRouter, {
744
+ children: /*#__PURE__*/ jsx(Wrapper, {
745
+ children: /*#__PURE__*/ jsxs(BucketOverview, {
746
+ bucketName: "test-bucket",
747
+ children: [
748
+ /*#__PURE__*/ jsx(BucketOverview.Actions, {}),
749
+ /*#__PURE__*/ jsxs(BucketOverview.Sections, {
750
+ children: [
751
+ /*#__PURE__*/ jsx(BucketOverview.GeneralSection, {
752
+ nameField: /*#__PURE__*/ jsx("span", {
753
+ children: "Slot Prop Name"
754
+ }),
755
+ renderName: renderName
756
+ }),
757
+ /*#__PURE__*/ jsx(BucketOverview.DataProtectionSection, {}),
758
+ /*#__PURE__*/ jsx(BucketOverview.PermissionsSection, {})
759
+ ]
760
+ })
761
+ ]
762
+ })
763
+ })
764
+ }));
765
+ expect(screen.getByText("Slot Prop Name")).toBeInTheDocument();
766
+ expect(renderName).not.toHaveBeenCalled();
767
+ });
768
+ });
769
+ });