@scality/data-browser-library 1.0.0-preview.9 → 1.0.1

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 (285) hide show
  1. package/dist/components/DataBrowserUI.d.ts +12 -0
  2. package/dist/components/DataBrowserUI.js +99 -0
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketAccessor.test.js +214 -0
  6. package/dist/components/__tests__/BucketCorsPage.test.d.ts +1 -0
  7. package/dist/components/__tests__/BucketCorsPage.test.js +263 -0
  8. package/dist/components/__tests__/BucketCreate.test.js +271 -105
  9. package/dist/components/__tests__/BucketDetails.test.d.ts +1 -0
  10. package/dist/components/__tests__/BucketDetails.test.js +421 -0
  11. package/dist/components/__tests__/BucketLifecycleFormPage.test.d.ts +13 -0
  12. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +178 -178
  13. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  14. package/dist/components/__tests__/BucketList.test.js +463 -239
  15. package/dist/components/__tests__/BucketNotificationFormPage.test.d.ts +1 -0
  16. package/dist/components/__tests__/BucketNotificationFormPage.test.js +348 -0
  17. package/dist/components/__tests__/BucketNotificationList.test.d.ts +1 -0
  18. package/dist/components/__tests__/BucketNotificationList.test.js +379 -0
  19. package/dist/components/__tests__/BucketOverview.test.js +281 -266
  20. package/dist/components/__tests__/BucketPolicyPage.test.js +151 -99
  21. package/dist/components/__tests__/BucketReplicationFormPage.test.d.ts +15 -0
  22. package/dist/components/__tests__/BucketReplicationFormPage.test.js +544 -544
  23. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  24. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  25. package/dist/components/__tests__/DeleteBucketButton.test.js +64 -64
  26. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  27. package/dist/components/__tests__/DeleteObjectButton.test.js +64 -64
  28. package/dist/components/__tests__/EmptyBucketButton.test.js +59 -59
  29. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  30. package/dist/components/__tests__/ObjectList.test.js +741 -240
  31. package/dist/components/__tests__/UploadButton.test.js +45 -45
  32. package/dist/components/breadcrumb/Breadcrumb.d.ts +6 -0
  33. package/dist/components/breadcrumb/Breadcrumb.js +37 -0
  34. package/dist/components/breadcrumb/DataBrowserBreadcrumb.d.ts +1 -0
  35. package/dist/components/breadcrumb/DataBrowserBreadcrumb.js +10 -0
  36. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.d.ts +1 -0
  37. package/dist/components/breadcrumb/__tests__/Breadcrumb.test.js +196 -0
  38. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.d.ts +1 -0
  39. package/dist/components/breadcrumb/__tests__/DataBrowserBreadcrumb.test.js +153 -0
  40. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.d.ts +1 -0
  41. package/dist/components/breadcrumb/__tests__/useBreadcrumbPaths.test.js +134 -0
  42. package/dist/components/breadcrumb/index.d.ts +8 -0
  43. package/dist/components/breadcrumb/index.js +4 -0
  44. package/dist/components/breadcrumb/useBreadcrumbPaths.d.ts +2 -0
  45. package/dist/components/breadcrumb/useBreadcrumbPaths.js +82 -0
  46. package/dist/components/buckets/BucketAccessor.d.ts +2 -0
  47. package/dist/components/buckets/BucketAccessor.js +125 -0
  48. package/dist/components/buckets/BucketConfigEditButton.d.ts +8 -0
  49. package/dist/components/buckets/{BucketPolicyButton.js → BucketConfigEditButton.js} +9 -5
  50. package/dist/components/buckets/BucketCorsPage.d.ts +1 -0
  51. package/dist/components/buckets/BucketCorsPage.js +234 -0
  52. package/dist/components/buckets/BucketCreate.d.ts +3 -2
  53. package/dist/components/buckets/BucketCreate.js +89 -47
  54. package/dist/components/buckets/BucketDetails.d.ts +42 -0
  55. package/dist/components/buckets/BucketDetails.js +249 -85
  56. package/dist/components/buckets/BucketLifecycleFormPage.js +206 -190
  57. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  58. package/dist/components/buckets/BucketLifecycleList.js +47 -47
  59. package/dist/components/buckets/BucketList.d.ts +7 -8
  60. package/dist/components/buckets/BucketList.js +158 -101
  61. package/dist/components/buckets/BucketLocation.js +4 -4
  62. package/dist/components/buckets/BucketOverview.d.ts +22 -2
  63. package/dist/components/buckets/BucketOverview.js +394 -187
  64. package/dist/components/buckets/BucketPage.js +43 -21
  65. package/dist/components/buckets/BucketPolicyPage.js +155 -127
  66. package/dist/components/buckets/BucketReplicationFormPage.js +134 -133
  67. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  68. package/dist/components/buckets/BucketReplicationList.js +42 -42
  69. package/dist/components/buckets/BucketVersioning.d.ts +4 -0
  70. package/dist/components/buckets/BucketVersioning.js +76 -0
  71. package/dist/components/buckets/DeleteBucketButton.js +8 -8
  72. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  73. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +2 -2
  74. package/dist/components/buckets/EmptyBucketButton.js +24 -24
  75. package/dist/components/buckets/EmptyBucketSummary.d.ts +2 -2
  76. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  77. package/dist/components/buckets/EmptyBucketSummaryList.d.ts +1 -1
  78. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  79. package/dist/components/buckets/__tests__/BucketVersioning.test.d.ts +1 -0
  80. package/dist/components/buckets/__tests__/BucketVersioning.test.js +163 -0
  81. package/dist/components/buckets/notifications/BucketNotificationFormPage.d.ts +1 -0
  82. package/dist/components/buckets/notifications/BucketNotificationFormPage.js +316 -0
  83. package/dist/components/buckets/notifications/BucketNotificationList.d.ts +10 -0
  84. package/dist/components/buckets/notifications/BucketNotificationList.js +267 -0
  85. package/dist/components/buckets/notifications/EventsSection.js +145 -29
  86. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  87. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  88. package/dist/components/buckets/notifications/events.d.ts +71 -7
  89. package/dist/components/buckets/notifications/events.js +98 -16
  90. package/dist/components/index.d.ts +27 -20
  91. package/dist/components/index.js +17 -10
  92. package/dist/components/layouts/ArrowNavigation.d.ts +3 -0
  93. package/dist/components/layouts/ArrowNavigation.js +28 -0
  94. package/dist/components/layouts/BrowserPageLayout.d.ts +5 -1
  95. package/dist/components/layouts/BrowserPageLayout.js +10 -5
  96. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  97. package/dist/components/objects/CreateFolderButton.js +12 -12
  98. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  99. package/dist/components/objects/DeleteObjectButton.js +19 -21
  100. package/dist/components/objects/GetPresignedUrlButton.d.ts +7 -0
  101. package/dist/components/objects/GetPresignedUrlButton.js +255 -0
  102. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +2 -2
  103. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +263 -230
  104. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +2 -2
  105. package/dist/components/objects/ObjectDetails/ObjectSummary.js +540 -138
  106. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +2 -2
  107. package/dist/components/objects/ObjectDetails/ObjectTags.js +95 -123
  108. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.d.ts +1 -0
  109. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +516 -0
  110. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.d.ts +1 -0
  111. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +1064 -0
  112. package/dist/components/objects/ObjectDetails/index.d.ts +18 -2
  113. package/dist/components/objects/ObjectDetails/index.js +152 -40
  114. package/dist/components/objects/ObjectList.d.ts +12 -10
  115. package/dist/components/objects/ObjectList.js +590 -263
  116. package/dist/components/objects/ObjectLock/EditRetentionButton.js +4 -4
  117. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +15 -15
  118. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  119. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +32 -31
  120. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  121. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  122. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +51 -51
  123. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +78 -78
  124. package/dist/components/objects/ObjectPage.js +12 -8
  125. package/dist/components/objects/UploadButton.d.ts +3 -3
  126. package/dist/components/objects/UploadButton.js +10 -10
  127. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.d.ts +1 -0
  128. package/dist/components/objects/__tests__/GetPresignedUrlButton.test.js +531 -0
  129. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  130. package/dist/components/providers/DataBrowserProvider.js +60 -38
  131. package/dist/components/providers/QueryProvider.d.ts +9 -0
  132. package/dist/components/providers/QueryProvider.js +21 -0
  133. package/dist/components/search/MetadataSearch.js +29 -28
  134. package/dist/components/search/SearchHints.js +1 -1
  135. package/dist/components/ui/ArrayFieldActions.js +12 -7
  136. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +2 -2
  137. package/dist/components/ui/ConfirmDeleteRuleModal.js +6 -1
  138. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  139. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  140. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  141. package/dist/components/ui/FilterFormSection.js +29 -29
  142. package/dist/components/ui/Search.elements.d.ts +2 -2
  143. package/dist/components/ui/Search.elements.js +7 -7
  144. package/dist/components/ui/Table.elements.d.ts +2 -1
  145. package/dist/components/ui/Table.elements.js +18 -12
  146. package/dist/config/__tests__/factory.test.d.ts +1 -0
  147. package/dist/config/__tests__/factory.test.js +311 -0
  148. package/dist/config/factory.d.ts +10 -56
  149. package/dist/config/factory.js +23 -71
  150. package/dist/config/types.d.ts +212 -34
  151. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +27 -0
  152. package/dist/contexts/DataBrowserUICustomizationContext.js +13 -0
  153. package/dist/hooks/__tests__/useAccessibleBuckets.test.d.ts +1 -0
  154. package/dist/hooks/__tests__/useAccessibleBuckets.test.js +145 -0
  155. package/dist/hooks/__tests__/useISVBucketDetection.test.js +45 -45
  156. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +27 -27
  157. package/dist/hooks/__tests__/useLoginMutation.test.d.ts +1 -0
  158. package/dist/hooks/__tests__/useLoginMutation.test.js +194 -0
  159. package/dist/hooks/bucketConfiguration.d.ts +8 -1
  160. package/dist/hooks/bucketConfiguration.js +52 -51
  161. package/dist/hooks/bucketOperations.d.ts +10 -1
  162. package/dist/hooks/bucketOperations.js +10 -9
  163. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +80 -80
  164. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +80 -80
  165. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +44 -44
  166. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +63 -63
  167. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +65 -65
  168. package/dist/hooks/factories/index.d.ts +4 -4
  169. package/dist/hooks/factories/index.js +2 -2
  170. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  171. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +16 -13
  172. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  173. package/dist/hooks/factories/useCreateS3LoginHook.js +1 -1
  174. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  175. package/dist/hooks/factories/useCreateS3MutationHook.js +7 -2
  176. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  177. package/dist/hooks/factories/useCreateS3QueryHook.js +11 -6
  178. package/dist/hooks/index.d.ts +19 -12
  179. package/dist/hooks/index.js +16 -9
  180. package/dist/hooks/loginOperations.d.ts +1 -1
  181. package/dist/hooks/loginOperations.js +1 -1
  182. package/dist/hooks/objectOperations.d.ts +2 -2
  183. package/dist/hooks/objectOperations.js +50 -49
  184. package/dist/hooks/presignedOperations.d.ts +4 -4
  185. package/dist/hooks/presignedOperations.js +5 -5
  186. package/dist/hooks/useAccessibleBuckets.d.ts +11 -0
  187. package/dist/hooks/useAccessibleBuckets.js +115 -0
  188. package/dist/hooks/useBatchObjectLegalHold.d.ts +11 -0
  189. package/dist/hooks/useBatchObjectLegalHold.js +48 -0
  190. package/dist/hooks/useBucketConfigEditor.d.ts +31 -0
  191. package/dist/hooks/useBucketConfigEditor.js +82 -0
  192. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  193. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  194. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  195. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  196. package/dist/hooks/useEmptyBucket.js +11 -11
  197. package/dist/hooks/useFeatures.d.ts +7 -0
  198. package/dist/hooks/useFeatures.js +8 -0
  199. package/dist/hooks/useISVBucketDetection.js +6 -6
  200. package/dist/hooks/useIsBucketEmpty.js +4 -4
  201. package/dist/hooks/useLimitedAccessFlow.d.ts +48 -0
  202. package/dist/hooks/useLimitedAccessFlow.js +23 -0
  203. package/dist/hooks/useS3Client.d.ts +6 -0
  204. package/dist/hooks/useS3Client.js +3 -2
  205. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  206. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  207. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  208. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  209. package/dist/index.d.ts +6 -6
  210. package/dist/index.js +2 -2
  211. package/dist/schemas/bucketPolicySchema.json +3 -13
  212. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  213. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  214. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  215. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  216. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  217. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  218. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  219. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  220. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  221. package/dist/test/msw/handlers/headObject.js +31 -13
  222. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  223. package/dist/test/msw/handlers/listBuckets.js +5 -3
  224. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  225. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  226. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  227. package/dist/test/msw/handlers/listObjects.js +35 -23
  228. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  229. package/dist/test/msw/handlers/objectLegalHold.js +32 -17
  230. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  231. package/dist/test/msw/handlers/objectRetention.js +31 -17
  232. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  233. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  234. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  235. package/dist/test/msw/handlers/putObject.js +27 -12
  236. package/dist/test/msw/handlers.d.ts +3 -3
  237. package/dist/test/msw/handlers.js +77 -54
  238. package/dist/test/msw/index.d.ts +2 -2
  239. package/dist/test/msw/index.js +1 -1
  240. package/dist/test/msw/server.d.ts +1 -1
  241. package/dist/test/msw/server.js +1 -1
  242. package/dist/test/msw/utils.js +2 -2
  243. package/dist/test/setup.d.ts +1 -1
  244. package/dist/test/setup.js +13 -30
  245. package/dist/test/testUtils.d.ts +85 -33
  246. package/dist/test/testUtils.js +176 -111
  247. package/dist/test/utils/errorHandling.test.js +119 -119
  248. package/dist/types/index.d.ts +49 -36
  249. package/dist/types/monaco.d.ts +13 -0
  250. package/dist/types/monaco.js +0 -0
  251. package/dist/utils/__tests__/proxyMiddleware.test.d.ts +1 -0
  252. package/dist/utils/__tests__/proxyMiddleware.test.js +579 -0
  253. package/dist/utils/__tests__/s3Client.test.d.ts +1 -0
  254. package/dist/utils/__tests__/s3Client.test.js +340 -0
  255. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  256. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +437 -0
  257. package/dist/utils/constants.d.ts +10 -0
  258. package/dist/utils/constants.js +19 -9
  259. package/dist/utils/deletion/index.d.ts +2 -2
  260. package/dist/utils/deletion/index.js +1 -1
  261. package/dist/utils/deletion/messages.d.ts +1 -1
  262. package/dist/utils/deletion/messages.js +4 -4
  263. package/dist/utils/errorHandling.d.ts +3 -3
  264. package/dist/utils/errorHandling.js +6 -6
  265. package/dist/utils/hooks.js +8 -8
  266. package/dist/utils/index.d.ts +5 -4
  267. package/dist/utils/index.js +4 -2
  268. package/dist/utils/proxyMiddleware.d.ts +32 -13
  269. package/dist/utils/proxyMiddleware.js +90 -36
  270. package/dist/utils/s3Client.d.ts +14 -4
  271. package/dist/utils/s3Client.js +5 -26
  272. package/dist/utils/s3ConfigIdentifier.d.ts +79 -0
  273. package/dist/utils/s3ConfigIdentifier.js +57 -0
  274. package/dist/utils/s3RuleUtils.d.ts +5 -5
  275. package/dist/utils/s3RuleUtils.js +17 -17
  276. package/package.json +10 -8
  277. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +0 -316
  278. package/dist/components/buckets/BucketPolicyButton.d.ts +0 -7
  279. package/dist/components/buckets/notifications/BucketNotificationCreatePage.d.ts +0 -1
  280. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +0 -234
  281. package/dist/hooks/useLoginMutation.d.ts +0 -21
  282. package/dist/hooks/useLoginMutation.js +0 -9
  283. package/dist/utils/useFeatures.d.ts +0 -1
  284. package/dist/utils/useFeatures.js +0 -7
  285. /package/dist/components/__tests__/{BucketNotificationCreatePage.test.d.ts → BucketAccessor.test.d.ts} +0 -0
@@ -1,11 +1,11 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { fireEvent, render, screen, waitFor } from "@testing-library/react";
3
+ import { useDeleteBucket } from "../../hooks/bucketOperations.js";
4
+ import { useIsBucketEmpty } from "../../hooks/useIsBucketEmpty.js";
3
5
  import { createTestWrapper } from "../../test/testUtils.js";
4
6
  import { DeleteBucketButton } from "../buckets/DeleteBucketButton.js";
5
- import { useIsBucketEmpty } from "../../hooks/useIsBucketEmpty.js";
6
- import { useDeleteBucket } from "../../hooks/bucketOperations.js";
7
- jest.mock("../../hooks/useIsBucketEmpty");
8
- jest.mock("../../hooks/bucketOperations");
7
+ jest.mock('../../hooks/useIsBucketEmpty');
8
+ jest.mock('../../hooks/bucketOperations');
9
9
  const mockUseIsBucketEmpty = jest.mocked(useIsBucketEmpty);
10
10
  const mockUseDeleteBucket = jest.mocked(useDeleteBucket);
11
11
  const renderDeleteBucketButton = (props = {})=>{
@@ -26,166 +26,166 @@ const mockHookDefaults = ()=>{
26
26
  });
27
27
  mockUseDeleteBucket.mockReturnValue({
28
28
  mutate: mockDeleteBucket,
29
- status: "idle"
29
+ status: 'idle'
30
30
  });
31
31
  };
32
- describe("DeleteBucketButton", ()=>{
32
+ describe('DeleteBucketButton', ()=>{
33
33
  beforeEach(()=>{
34
34
  jest.clearAllMocks();
35
35
  mockHookDefaults();
36
36
  });
37
- it("renders delete button with correct label", ()=>{
37
+ it('renders delete button with correct label', ()=>{
38
38
  renderDeleteBucketButton();
39
- expect(screen.getByRole("button", {
39
+ expect(screen.getByRole('button', {
40
40
  name: /delete bucket/i
41
41
  })).toBeInTheDocument();
42
42
  });
43
- it("enables button when bucket is empty", ()=>{
43
+ it('enables button when bucket is empty', ()=>{
44
44
  mockUseIsBucketEmpty.mockReturnValue({
45
45
  isEmpty: true,
46
46
  isLoading: false,
47
47
  error: null
48
48
  });
49
49
  renderDeleteBucketButton();
50
- const button = screen.getByRole("button", {
50
+ const button = screen.getByRole('button', {
51
51
  name: /delete bucket/i
52
52
  });
53
53
  expect(button).not.toBeDisabled();
54
54
  });
55
- it("disables button when bucket is not empty", ()=>{
55
+ it('disables button when bucket is not empty', ()=>{
56
56
  mockUseIsBucketEmpty.mockReturnValue({
57
57
  isEmpty: false,
58
58
  isLoading: false,
59
59
  error: null
60
60
  });
61
61
  renderDeleteBucketButton();
62
- const button = screen.getByRole("button", {
62
+ const button = screen.getByRole('button', {
63
63
  name: /delete bucket/i
64
64
  });
65
65
  expect(button).toBeDisabled();
66
66
  });
67
- it("disables button when checking if bucket is empty", ()=>{
67
+ it('disables button when checking if bucket is empty', ()=>{
68
68
  mockUseIsBucketEmpty.mockReturnValue({
69
69
  isEmpty: null,
70
70
  isLoading: true,
71
71
  error: null
72
72
  });
73
73
  renderDeleteBucketButton();
74
- const button = screen.getByRole("button", {
74
+ const button = screen.getByRole('button', {
75
75
  name: /delete bucket/i
76
76
  });
77
77
  expect(button).toBeDisabled();
78
78
  });
79
- it("disables button when disabled prop is true", ()=>{
79
+ it('disables button when disabled prop is true', ()=>{
80
80
  renderDeleteBucketButton({
81
81
  disabled: true
82
82
  });
83
- const button = screen.getByRole("button", {
83
+ const button = screen.getByRole('button', {
84
84
  name: /delete bucket/i
85
85
  });
86
86
  expect(button).toBeDisabled();
87
87
  });
88
- it("shows tooltip when bucket is not empty", ()=>{
88
+ it('shows tooltip when bucket is not empty', ()=>{
89
89
  mockUseIsBucketEmpty.mockReturnValue({
90
90
  isEmpty: false,
91
91
  isLoading: false,
92
92
  error: null
93
93
  });
94
94
  renderDeleteBucketButton();
95
- expect(screen.getByRole("button", {
95
+ expect(screen.getByRole('button', {
96
96
  name: /delete bucket/i
97
97
  })).toBeInTheDocument();
98
98
  });
99
- it("shows checking tooltip when loading", ()=>{
99
+ it('shows checking tooltip when loading', ()=>{
100
100
  mockUseIsBucketEmpty.mockReturnValue({
101
101
  isEmpty: null,
102
102
  isLoading: true,
103
103
  error: null
104
104
  });
105
105
  renderDeleteBucketButton();
106
- expect(screen.getByRole("button", {
106
+ expect(screen.getByRole('button', {
107
107
  name: /delete bucket/i
108
108
  })).toBeInTheDocument();
109
109
  });
110
- it("opens confirmation modal when button is clicked", ()=>{
110
+ it('opens confirmation modal when button is clicked', ()=>{
111
111
  renderDeleteBucketButton();
112
- const button = screen.getByRole("button", {
112
+ const button = screen.getByRole('button', {
113
113
  name: /delete bucket/i
114
114
  });
115
115
  fireEvent.click(button);
116
- expect(screen.getByText("Confirmation")).toBeInTheDocument();
116
+ expect(screen.getByText('Confirmation')).toBeInTheDocument();
117
117
  expect(screen.getByText(/are you sure you want to delete bucket: test-bucket/i)).toBeInTheDocument();
118
118
  });
119
- it("shows cancel and delete buttons in modal", ()=>{
119
+ it('shows cancel and delete buttons in modal', ()=>{
120
120
  renderDeleteBucketButton();
121
- const button = screen.getByRole("button", {
121
+ const button = screen.getByRole('button', {
122
122
  name: /delete bucket/i
123
123
  });
124
124
  fireEvent.click(button);
125
- expect(screen.getByRole("button", {
125
+ expect(screen.getByRole('button', {
126
126
  name: /cancel/i
127
127
  })).toBeInTheDocument();
128
- expect(screen.getByRole("button", {
128
+ expect(screen.getByRole('button', {
129
129
  name: /^delete$/i
130
130
  })).toBeInTheDocument();
131
131
  });
132
- it("closes modal when cancel is clicked", ()=>{
132
+ it('closes modal when cancel is clicked', ()=>{
133
133
  renderDeleteBucketButton();
134
- const deleteButton = screen.getByRole("button", {
134
+ const deleteButton = screen.getByRole('button', {
135
135
  name: /delete bucket/i
136
136
  });
137
137
  fireEvent.click(deleteButton);
138
- const cancelButton = screen.getByRole("button", {
138
+ const cancelButton = screen.getByRole('button', {
139
139
  name: /cancel/i
140
140
  });
141
141
  fireEvent.click(cancelButton);
142
- expect(screen.queryByText("Confirmation")).not.toBeInTheDocument();
142
+ expect(screen.queryByText('Confirmation')).not.toBeInTheDocument();
143
143
  });
144
- it("calls delete mutation when delete is confirmed", ()=>{
144
+ it('calls delete mutation when delete is confirmed', ()=>{
145
145
  renderDeleteBucketButton();
146
- const deleteButton = screen.getByRole("button", {
146
+ const deleteButton = screen.getByRole('button', {
147
147
  name: /delete bucket/i
148
148
  });
149
149
  fireEvent.click(deleteButton);
150
- const confirmButton = screen.getByRole("button", {
150
+ const confirmButton = screen.getByRole('button', {
151
151
  name: /^delete$/i
152
152
  });
153
153
  fireEvent.click(confirmButton);
154
154
  expect(mockDeleteBucket).toHaveBeenCalledWith({
155
- Bucket: "test-bucket"
155
+ Bucket: 'test-bucket'
156
156
  }, expect.objectContaining({
157
157
  onSuccess: expect.any(Function),
158
158
  onError: expect.any(Function)
159
159
  }));
160
160
  });
161
- it("calls onDeleteSuccess callback when delete succeeds", ()=>{
161
+ it('calls onDeleteSuccess callback when delete succeeds', ()=>{
162
162
  const onDeleteSuccess = jest.fn();
163
163
  renderDeleteBucketButton({
164
164
  onDeleteSuccess
165
165
  });
166
- const deleteButton = screen.getByRole("button", {
166
+ const deleteButton = screen.getByRole('button', {
167
167
  name: /delete bucket/i
168
168
  });
169
169
  fireEvent.click(deleteButton);
170
- const confirmButton = screen.getByRole("button", {
170
+ const confirmButton = screen.getByRole('button', {
171
171
  name: /^delete$/i
172
172
  });
173
173
  fireEvent.click(confirmButton);
174
174
  const successCallback = mockDeleteBucket.mock.calls[0][1].onSuccess;
175
175
  successCallback();
176
- expect(onDeleteSuccess).toHaveBeenCalledWith("test-bucket");
176
+ expect(onDeleteSuccess).toHaveBeenCalledWith('test-bucket');
177
177
  });
178
- it("calls onDeleteError callback when delete fails", ()=>{
178
+ it('calls onDeleteError callback when delete fails', ()=>{
179
179
  const onDeleteError = jest.fn();
180
- const testError = new Error("Delete failed");
180
+ const testError = new Error('Delete failed');
181
181
  renderDeleteBucketButton({
182
182
  onDeleteError
183
183
  });
184
- const deleteButton = screen.getByRole("button", {
184
+ const deleteButton = screen.getByRole('button', {
185
185
  name: /delete bucket/i
186
186
  });
187
187
  fireEvent.click(deleteButton);
188
- const confirmButton = screen.getByRole("button", {
188
+ const confirmButton = screen.getByRole('button', {
189
189
  name: /^delete$/i
190
190
  });
191
191
  fireEvent.click(confirmButton);
@@ -193,77 +193,77 @@ describe("DeleteBucketButton", ()=>{
193
193
  errorCallback(testError);
194
194
  expect(onDeleteError).toHaveBeenCalledWith(testError);
195
195
  });
196
- it("handles non-Error objects in onError callback", ()=>{
196
+ it('handles non-Error objects in onError callback', ()=>{
197
197
  const onDeleteError = jest.fn();
198
198
  renderDeleteBucketButton({
199
199
  onDeleteError
200
200
  });
201
- const deleteButton = screen.getByRole("button", {
201
+ const deleteButton = screen.getByRole('button', {
202
202
  name: /delete bucket/i
203
203
  });
204
204
  fireEvent.click(deleteButton);
205
- const confirmButton = screen.getByRole("button", {
205
+ const confirmButton = screen.getByRole('button', {
206
206
  name: /^delete$/i
207
207
  });
208
208
  fireEvent.click(confirmButton);
209
209
  const errorCallback = mockDeleteBucket.mock.calls[0][1].onError;
210
- errorCallback("string error");
211
- expect(onDeleteError).toHaveBeenCalledWith(new Error("Delete failed"));
210
+ errorCallback('string error');
211
+ expect(onDeleteError).toHaveBeenCalledWith(new Error('Delete failed'));
212
212
  });
213
- it("closes modal when delete succeeds", async ()=>{
213
+ it('closes modal when delete succeeds', async ()=>{
214
214
  renderDeleteBucketButton();
215
- const deleteButton = screen.getByRole("button", {
215
+ const deleteButton = screen.getByRole('button', {
216
216
  name: /delete bucket/i
217
217
  });
218
218
  fireEvent.click(deleteButton);
219
- expect(screen.getByText("Confirmation")).toBeInTheDocument();
220
- const confirmButton = screen.getByRole("button", {
219
+ expect(screen.getByText('Confirmation')).toBeInTheDocument();
220
+ const confirmButton = screen.getByRole('button', {
221
221
  name: /^delete$/i
222
222
  });
223
223
  fireEvent.click(confirmButton);
224
224
  const successCallback = mockDeleteBucket.mock.calls[0][1].onSuccess;
225
225
  successCallback();
226
226
  await waitFor(()=>{
227
- expect(screen.queryByText("Confirmation")).not.toBeInTheDocument();
227
+ expect(screen.queryByText('Confirmation')).not.toBeInTheDocument();
228
228
  });
229
229
  });
230
- it("shows loading state in delete button when deletion is pending", ()=>{
230
+ it('shows loading state in delete button when deletion is pending', ()=>{
231
231
  mockUseDeleteBucket.mockReturnValue({
232
232
  mutate: mockDeleteBucket,
233
- status: "pending"
233
+ status: 'pending'
234
234
  });
235
235
  renderDeleteBucketButton();
236
- const deleteButton = screen.getByRole("button", {
236
+ const deleteButton = screen.getByRole('button', {
237
237
  name: /delete bucket/i
238
238
  });
239
239
  fireEvent.click(deleteButton);
240
- const confirmButton = screen.getByRole("button", {
240
+ const confirmButton = screen.getByRole('button', {
241
241
  name: /^delete$/i
242
242
  });
243
243
  expect(confirmButton).toBeDisabled();
244
244
  });
245
- it("works without optional callbacks", ()=>{
245
+ it('works without optional callbacks', ()=>{
246
246
  expect(()=>{
247
247
  renderDeleteBucketButton();
248
- const deleteButton = screen.getByRole("button", {
248
+ const deleteButton = screen.getByRole('button', {
249
249
  name: /delete bucket/i
250
250
  });
251
251
  fireEvent.click(deleteButton);
252
- const confirmButton = screen.getByRole("button", {
252
+ const confirmButton = screen.getByRole('button', {
253
253
  name: /^delete$/i
254
254
  });
255
255
  fireEvent.click(confirmButton);
256
256
  const successCallback = mockDeleteBucket.mock.calls[0][1].onSuccess;
257
257
  const errorCallback = mockDeleteBucket.mock.calls[0][1].onError;
258
258
  successCallback();
259
- errorCallback(new Error("test"));
259
+ errorCallback(new Error('test'));
260
260
  }).not.toThrow();
261
261
  });
262
- it("displays correct bucket name in confirmation message", ()=>{
262
+ it('displays correct bucket name in confirmation message', ()=>{
263
263
  renderDeleteBucketButton({
264
- bucketName: "my-special-bucket"
264
+ bucketName: 'my-special-bucket'
265
265
  });
266
- const deleteButton = screen.getByRole("button", {
266
+ const deleteButton = screen.getByRole('button', {
267
267
  name: /delete bucket/i
268
268
  });
269
269
  fireEvent.click(deleteButton);
@@ -1,40 +1,40 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { fireEvent, render, screen, waitFor } from "@testing-library/react";
3
- import { MemoryRouter } from "react-router-dom";
3
+ import { MemoryRouter } from "react-router";
4
4
  import { createTestWrapper } from "../../test/testUtils.js";
5
5
  import { DeleteBucketConfigRuleButton } from "../buckets/DeleteBucketConfigRuleButton.js";
6
6
  const mockLifecycleRules = [
7
7
  {
8
- ID: "rule-1",
9
- Status: "Enabled",
8
+ ID: 'rule-1',
9
+ Status: 'Enabled',
10
10
  Expiration: {
11
11
  Days: 30
12
12
  }
13
13
  },
14
14
  {
15
- ID: "rule-2",
16
- Status: "Disabled",
15
+ ID: 'rule-2',
16
+ Status: 'Disabled',
17
17
  NoncurrentVersionExpiration: {
18
18
  NoncurrentDays: 90
19
19
  }
20
20
  }
21
21
  ];
22
- describe("DeleteBucketConfigRuleButton", ()=>{
22
+ describe('DeleteBucketConfigRuleButton', ()=>{
23
23
  let mockUpdate;
24
24
  let mockDelete;
25
25
  const renderButton = (props = {})=>{
26
26
  const defaultProps = {
27
- bucketName: "test-bucket",
28
- ruleId: "rule-1",
27
+ bucketName: 'test-bucket',
28
+ ruleId: 'rule-1',
29
29
  rules: mockLifecycleRules,
30
- ruleType: "lifecycle",
30
+ ruleType: 'lifecycle',
31
31
  updateMutation: {
32
32
  mutate: mockUpdate,
33
- status: "idle"
33
+ status: 'idle'
34
34
  },
35
35
  deleteMutation: {
36
36
  mutate: mockDelete,
37
- status: "idle"
37
+ status: 'idle'
38
38
  },
39
39
  buildUpdateInput: (remainingRules)=>({
40
40
  LifecycleConfiguration: {
@@ -42,10 +42,10 @@ describe("DeleteBucketConfigRuleButton", ()=>{
42
42
  }
43
43
  }),
44
44
  invalidationKeys: [
45
- "GetBucketLifecycle"
45
+ 'GetBucketLifecycle'
46
46
  ],
47
- successMessage: "Rule deleted successfully",
48
- errorMessage: "Failed to delete rule"
47
+ successMessage: 'Rule deleted successfully',
48
+ errorMessage: 'Failed to delete rule'
49
49
  };
50
50
  const Wrapper = createTestWrapper();
51
51
  return render(/*#__PURE__*/ jsx(MemoryRouter, {
@@ -62,92 +62,92 @@ describe("DeleteBucketConfigRuleButton", ()=>{
62
62
  mockUpdate = jest.fn();
63
63
  mockDelete = jest.fn();
64
64
  });
65
- it("renders delete button", ()=>{
65
+ it('renders delete button', ()=>{
66
66
  renderButton();
67
- const deleteButton = screen.getByRole("button", {
67
+ const deleteButton = screen.getByRole('button', {
68
68
  name: /delete rule/i
69
69
  });
70
70
  expect(deleteButton).toBeInTheDocument();
71
71
  });
72
- it("opens confirmation modal when clicked", ()=>{
72
+ it('opens confirmation modal when clicked', ()=>{
73
73
  renderButton();
74
- const deleteButton = screen.getByRole("button", {
74
+ const deleteButton = screen.getByRole('button', {
75
75
  name: /delete rule/i
76
76
  });
77
77
  fireEvent.click(deleteButton);
78
78
  expect(screen.getByText(/are you sure you want to delete the lifecycle rule/i)).toBeInTheDocument();
79
79
  expect(screen.getByText(/rule-1/)).toBeInTheDocument();
80
80
  });
81
- it("closes modal when cancel is clicked", ()=>{
81
+ it('closes modal when cancel is clicked', ()=>{
82
82
  renderButton();
83
- fireEvent.click(screen.getByRole("button", {
83
+ fireEvent.click(screen.getByRole('button', {
84
84
  name: /delete rule/i
85
85
  }));
86
86
  expect(screen.getByText(/are you sure/i)).toBeInTheDocument();
87
- fireEvent.click(screen.getByRole("button", {
87
+ fireEvent.click(screen.getByRole('button', {
88
88
  name: /cancel/i
89
89
  }));
90
90
  expect(screen.queryByText(/are you sure/i)).not.toBeInTheDocument();
91
91
  });
92
- it("calls update when deleting a rule with remaining rules", async ()=>{
92
+ it('calls update when deleting a rule with remaining rules', async ()=>{
93
93
  renderButton();
94
- fireEvent.click(screen.getByRole("button", {
94
+ fireEvent.click(screen.getByRole('button', {
95
95
  name: /delete rule/i
96
96
  }));
97
- fireEvent.click(screen.getByRole("button", {
97
+ fireEvent.click(screen.getByRole('button', {
98
98
  name: /^delete$/i
99
99
  }));
100
100
  await waitFor(()=>{
101
101
  expect(mockUpdate).toHaveBeenCalled();
102
102
  const callArgs = mockUpdate.mock.calls[0][0];
103
- expect(callArgs.Bucket).toBe("test-bucket");
103
+ expect(callArgs.Bucket).toBe('test-bucket');
104
104
  expect(callArgs.LifecycleConfiguration.Rules).toHaveLength(1);
105
- expect(callArgs.LifecycleConfiguration.Rules[0].ID).toBe("rule-2");
105
+ expect(callArgs.LifecycleConfiguration.Rules[0].ID).toBe('rule-2');
106
106
  });
107
107
  });
108
- it("calls delete when deleting the last rule", async ()=>{
108
+ it('calls delete when deleting the last rule', async ()=>{
109
109
  renderButton({
110
110
  rules: [
111
111
  mockLifecycleRules[0]
112
112
  ]
113
113
  });
114
- fireEvent.click(screen.getByRole("button", {
114
+ fireEvent.click(screen.getByRole('button', {
115
115
  name: /delete rule/i
116
116
  }));
117
- fireEvent.click(screen.getByRole("button", {
117
+ fireEvent.click(screen.getByRole('button', {
118
118
  name: /^delete$/i
119
119
  }));
120
120
  await waitFor(()=>{
121
121
  expect(mockDelete).toHaveBeenCalledWith({
122
- Bucket: "test-bucket"
122
+ Bucket: 'test-bucket'
123
123
  }, expect.any(Object));
124
124
  });
125
125
  });
126
- it("closes modal after successful deletion", async ()=>{
126
+ it('closes modal after successful deletion', async ()=>{
127
127
  mockUpdate.mockImplementation((_, options)=>{
128
128
  options.onSuccess();
129
129
  });
130
130
  renderButton();
131
- fireEvent.click(screen.getByRole("button", {
131
+ fireEvent.click(screen.getByRole('button', {
132
132
  name: /delete rule/i
133
133
  }));
134
- fireEvent.click(screen.getByRole("button", {
134
+ fireEvent.click(screen.getByRole('button', {
135
135
  name: /^delete$/i
136
136
  }));
137
137
  await waitFor(()=>{
138
138
  expect(screen.queryByText(/are you sure/i)).not.toBeInTheDocument();
139
139
  });
140
140
  });
141
- it("closes modal after failed deletion", async ()=>{
142
- const consoleError = jest.spyOn(console, "error").mockImplementation(()=>{});
141
+ it('closes modal after failed deletion', async ()=>{
142
+ const consoleError = jest.spyOn(console, 'error').mockImplementation(()=>{});
143
143
  mockUpdate.mockImplementation((_, options)=>{
144
- options.onError(new Error("Delete failed"));
144
+ options.onError(new Error('Delete failed'));
145
145
  });
146
146
  renderButton();
147
- fireEvent.click(screen.getByRole("button", {
147
+ fireEvent.click(screen.getByRole('button', {
148
148
  name: /delete rule/i
149
149
  }));
150
- fireEvent.click(screen.getByRole("button", {
150
+ fireEvent.click(screen.getByRole('button', {
151
151
  name: /^delete$/i
152
152
  }));
153
153
  await waitFor(()=>{
@@ -158,35 +158,35 @@ describe("DeleteBucketConfigRuleButton", ()=>{
158
158
  });
159
159
  consoleError.mockRestore();
160
160
  });
161
- it("disables buttons while deletion is in progress", ()=>{
161
+ it('disables buttons while deletion is in progress', ()=>{
162
162
  renderButton({
163
163
  updateMutation: {
164
164
  mutate: mockUpdate,
165
- status: "pending"
165
+ status: 'pending'
166
166
  }
167
167
  });
168
- fireEvent.click(screen.getByRole("button", {
168
+ fireEvent.click(screen.getByRole('button', {
169
169
  name: /delete rule/i
170
170
  }));
171
- const cancelButton = screen.getByRole("button", {
171
+ const cancelButton = screen.getByRole('button', {
172
172
  name: /cancel/i
173
173
  });
174
- const confirmButton = screen.getByRole("button", {
174
+ const confirmButton = screen.getByRole('button', {
175
175
  name: /^delete$/i
176
176
  });
177
177
  expect(cancelButton).toBeDisabled();
178
178
  expect(confirmButton).toBeDisabled();
179
179
  });
180
- it("stops event propagation when delete button is clicked", ()=>{
180
+ it('stops event propagation when delete button is clicked', ()=>{
181
181
  renderButton();
182
- const deleteButton = screen.getByRole("button", {
182
+ const deleteButton = screen.getByRole('button', {
183
183
  name: /delete rule/i
184
184
  });
185
185
  const mockStopPropagation = jest.fn();
186
- const clickEvent = new MouseEvent("click", {
186
+ const clickEvent = new MouseEvent('click', {
187
187
  bubbles: true
188
188
  });
189
- Object.defineProperty(clickEvent, "stopPropagation", {
189
+ Object.defineProperty(clickEvent, 'stopPropagation', {
190
190
  value: mockStopPropagation,
191
191
  writable: true
192
192
  });