@scality/data-browser-library 1.0.0-preview.13 → 1.0.0-preview.16

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 (212) hide show
  1. package/dist/components/DataBrowserUI.d.ts +6 -14
  2. package/dist/components/DataBrowserUI.js +79 -55
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.js +3 -3
  5. package/dist/components/__tests__/BucketCreate.test.js +102 -102
  6. package/dist/components/__tests__/BucketDetails.test.js +122 -123
  7. package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
  8. package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
  9. package/dist/components/__tests__/BucketList.test.js +175 -176
  10. package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
  11. package/dist/components/__tests__/BucketOverview.test.js +257 -201
  12. package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
  13. package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
  14. package/dist/components/__tests__/BucketReplicationList.test.js +106 -106
  15. package/dist/components/__tests__/CreateFolderButton.test.js +56 -56
  16. package/dist/components/__tests__/DeleteBucketButton.test.js +62 -62
  17. package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
  18. package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
  19. package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
  20. package/dist/components/__tests__/MetadataSearch.test.js +65 -65
  21. package/dist/components/__tests__/ObjectList.test.js +252 -251
  22. package/dist/components/__tests__/UploadButton.test.js +45 -45
  23. package/dist/components/buckets/BucketCreate.d.ts +2 -2
  24. package/dist/components/buckets/BucketCreate.js +41 -41
  25. package/dist/components/buckets/BucketDetails.d.ts +2 -2
  26. package/dist/components/buckets/BucketDetails.js +48 -36
  27. package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
  28. package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
  29. package/dist/components/buckets/BucketLifecycleList.js +46 -46
  30. package/dist/components/buckets/BucketList.d.ts +2 -2
  31. package/dist/components/buckets/BucketList.js +28 -27
  32. package/dist/components/buckets/BucketLocation.js +3 -3
  33. package/dist/components/buckets/BucketOverview.d.ts +1 -1
  34. package/dist/components/buckets/BucketOverview.js +64 -65
  35. package/dist/components/buckets/BucketPage.js +19 -11
  36. package/dist/components/buckets/BucketPolicyButton.js +2 -2
  37. package/dist/components/buckets/BucketPolicyPage.js +27 -25
  38. package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
  39. package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
  40. package/dist/components/buckets/BucketReplicationList.js +41 -41
  41. package/dist/components/buckets/BucketVersioning.js +11 -11
  42. package/dist/components/buckets/DeleteBucketButton.js +5 -5
  43. package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
  44. package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
  45. package/dist/components/buckets/EmptyBucketButton.js +19 -19
  46. package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
  47. package/dist/components/buckets/EmptyBucketSummary.js +1 -1
  48. package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
  49. package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
  50. package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
  51. package/dist/components/buckets/notifications/EventsSection.js +144 -28
  52. package/dist/components/buckets/notifications/__tests__/events.test.d.ts +1 -0
  53. package/dist/components/buckets/notifications/__tests__/events.test.js +56 -0
  54. package/dist/components/buckets/notifications/events.d.ts +71 -7
  55. package/dist/components/buckets/notifications/events.js +98 -16
  56. package/dist/components/index.d.ts +24 -22
  57. package/dist/components/index.js +5 -3
  58. package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
  59. package/dist/components/layouts/ArrowNavigation.js +3 -3
  60. package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
  61. package/dist/components/layouts/BrowserPageLayout.js +1 -1
  62. package/dist/components/objects/CreateFolderButton.d.ts +2 -2
  63. package/dist/components/objects/CreateFolderButton.js +9 -9
  64. package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
  65. package/dist/components/objects/DeleteObjectButton.js +20 -20
  66. package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
  67. package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
  68. package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
  69. package/dist/components/objects/ObjectDetails/ObjectSummary.js +39 -39
  70. package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
  71. package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
  72. package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +119 -119
  73. package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +211 -211
  74. package/dist/components/objects/ObjectDetails/index.d.ts +1 -1
  75. package/dist/components/objects/ObjectDetails/index.js +30 -30
  76. package/dist/components/objects/ObjectList.d.ts +5 -5
  77. package/dist/components/objects/ObjectList.js +113 -112
  78. package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
  79. package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
  80. package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
  81. package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
  82. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.d.ts +1 -1
  83. package/dist/components/objects/ObjectLock/ObjectLockSettingsUtils.js +6 -6
  84. package/dist/components/objects/ObjectLock/__tests__/EditRetentionButton.test.js +50 -50
  85. package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
  86. package/dist/components/objects/ObjectPage.js +5 -4
  87. package/dist/components/objects/UploadButton.d.ts +3 -3
  88. package/dist/components/objects/UploadButton.js +5 -5
  89. package/dist/components/providers/DataBrowserProvider.d.ts +23 -12
  90. package/dist/components/providers/DataBrowserProvider.js +60 -38
  91. package/dist/components/providers/QueryProvider.d.ts +9 -0
  92. package/dist/components/providers/QueryProvider.js +22 -0
  93. package/dist/components/search/MetadataSearch.js +26 -25
  94. package/dist/components/search/SearchHints.js +1 -1
  95. package/dist/components/ui/ArrayFieldActions.js +4 -4
  96. package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
  97. package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -1
  98. package/dist/components/ui/DeleteObjectModalContent.d.ts +1 -1
  99. package/dist/components/ui/DeleteObjectModalContent.js +12 -12
  100. package/dist/components/ui/FilterFormSection.d.ts +2 -2
  101. package/dist/components/ui/FilterFormSection.js +29 -29
  102. package/dist/components/ui/Search.elements.d.ts +1 -1
  103. package/dist/components/ui/Search.elements.js +7 -7
  104. package/dist/components/ui/Table.elements.js +5 -5
  105. package/dist/config/factory.d.ts +23 -10
  106. package/dist/config/factory.js +22 -7
  107. package/dist/config/types.d.ts +20 -3
  108. package/dist/contexts/DataBrowserUICustomizationContext.d.ts +2 -2
  109. package/dist/hooks/__tests__/useISVBucketDetection.test.js +42 -42
  110. package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
  111. package/dist/hooks/bucketConfiguration.d.ts +1 -1
  112. package/dist/hooks/bucketConfiguration.js +48 -48
  113. package/dist/hooks/bucketOperations.d.ts +1 -1
  114. package/dist/hooks/bucketOperations.js +6 -6
  115. package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
  116. package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
  117. package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
  118. package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
  119. package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
  120. package/dist/hooks/factories/index.d.ts +4 -4
  121. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
  122. package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
  123. package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
  124. package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
  125. package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
  126. package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
  127. package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
  128. package/dist/hooks/index.d.ts +16 -13
  129. package/dist/hooks/index.js +4 -1
  130. package/dist/hooks/loginOperations.d.ts +1 -1
  131. package/dist/hooks/loginOperations.js +1 -1
  132. package/dist/hooks/objectOperations.d.ts +2 -2
  133. package/dist/hooks/objectOperations.js +49 -49
  134. package/dist/hooks/presignedOperations.d.ts +2 -2
  135. package/dist/hooks/presignedOperations.js +3 -3
  136. package/dist/hooks/useBatchObjectLegalHold.js +7 -4
  137. package/dist/hooks/useDataBrowserNavigate.d.ts +28 -0
  138. package/dist/hooks/useDataBrowserNavigate.js +24 -0
  139. package/dist/hooks/useDeleteBucketConfigRule.d.ts +2 -2
  140. package/dist/hooks/useDeleteBucketConfigRule.js +4 -4
  141. package/dist/hooks/useEmptyBucket.js +10 -10
  142. package/dist/hooks/useFeatures.d.ts +7 -0
  143. package/dist/hooks/useFeatures.js +8 -0
  144. package/dist/hooks/useISVBucketDetection.js +5 -5
  145. package/dist/hooks/useIsBucketEmpty.js +4 -4
  146. package/dist/hooks/useLoginMutation.d.ts +1 -1
  147. package/dist/hooks/useLoginMutation.js +1 -1
  148. package/dist/hooks/useS3Client.d.ts +6 -0
  149. package/dist/hooks/useS3Client.js +3 -2
  150. package/dist/hooks/useS3ConfigSwitch.d.ts +11 -0
  151. package/dist/hooks/useS3ConfigSwitch.js +37 -0
  152. package/dist/hooks/useSupportedNotificationEvents.d.ts +6 -0
  153. package/dist/hooks/useSupportedNotificationEvents.js +8 -0
  154. package/dist/index.d.ts +6 -6
  155. package/dist/test/msw/handlers/deleteBucket.d.ts +1 -1
  156. package/dist/test/msw/handlers/deleteBucket.js +20 -10
  157. package/dist/test/msw/handlers/getBucketAcl.d.ts +1 -1
  158. package/dist/test/msw/handlers/getBucketAcl.js +29 -17
  159. package/dist/test/msw/handlers/getBucketLocation.d.ts +1 -1
  160. package/dist/test/msw/handlers/getBucketLocation.js +29 -15
  161. package/dist/test/msw/handlers/getBucketPolicy.d.ts +1 -1
  162. package/dist/test/msw/handlers/getBucketPolicy.js +52 -32
  163. package/dist/test/msw/handlers/headObject.d.ts +1 -1
  164. package/dist/test/msw/handlers/headObject.js +31 -13
  165. package/dist/test/msw/handlers/listBuckets.d.ts +1 -1
  166. package/dist/test/msw/handlers/listBuckets.js +5 -3
  167. package/dist/test/msw/handlers/listObjectVersions.d.ts +1 -1
  168. package/dist/test/msw/handlers/listObjectVersions.js +38 -26
  169. package/dist/test/msw/handlers/listObjects.d.ts +1 -1
  170. package/dist/test/msw/handlers/listObjects.js +35 -23
  171. package/dist/test/msw/handlers/objectLegalHold.d.ts +1 -1
  172. package/dist/test/msw/handlers/objectLegalHold.js +31 -16
  173. package/dist/test/msw/handlers/objectRetention.d.ts +1 -1
  174. package/dist/test/msw/handlers/objectRetention.js +31 -17
  175. package/dist/test/msw/handlers/putBucketAcl.d.ts +1 -1
  176. package/dist/test/msw/handlers/putBucketAcl.js +29 -14
  177. package/dist/test/msw/handlers/putObject.d.ts +1 -1
  178. package/dist/test/msw/handlers/putObject.js +27 -12
  179. package/dist/test/msw/handlers.d.ts +3 -3
  180. package/dist/test/msw/handlers.js +72 -49
  181. package/dist/test/msw/index.d.ts +2 -2
  182. package/dist/test/msw/server.d.ts +1 -1
  183. package/dist/test/msw/server.js +1 -1
  184. package/dist/test/msw/utils.js +2 -2
  185. package/dist/test/setup.d.ts +1 -1
  186. package/dist/test/setup.js +19 -19
  187. package/dist/test/testUtils.d.ts +9 -15
  188. package/dist/test/testUtils.js +73 -91
  189. package/dist/test/utils/errorHandling.test.js +119 -119
  190. package/dist/types/index.d.ts +6 -31
  191. package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
  192. package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
  193. package/dist/utils/constants.js +8 -8
  194. package/dist/utils/deletion/index.d.ts +2 -2
  195. package/dist/utils/deletion/messages.d.ts +1 -1
  196. package/dist/utils/deletion/messages.js +4 -4
  197. package/dist/utils/errorHandling.d.ts +3 -3
  198. package/dist/utils/errorHandling.js +6 -6
  199. package/dist/utils/hooks.js +8 -8
  200. package/dist/utils/index.d.ts +5 -4
  201. package/dist/utils/index.js +2 -0
  202. package/dist/utils/proxyMiddleware.d.ts +1 -1
  203. package/dist/utils/proxyMiddleware.js +6 -11
  204. package/dist/utils/s3Client.d.ts +2 -2
  205. package/dist/utils/s3Client.js +1 -1
  206. package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
  207. package/dist/utils/s3ConfigIdentifier.js +55 -0
  208. package/dist/utils/s3RuleUtils.d.ts +5 -5
  209. package/dist/utils/s3RuleUtils.js +17 -17
  210. package/package.json +2 -2
  211. package/dist/utils/useFeatures.d.ts +0 -1
  212. package/dist/utils/useFeatures.js +0 -7
@@ -4,9 +4,8 @@ import { MemoryRouter } from "react-router";
4
4
  import { createTestWrapper, mockOffsetSize } from "../../test/testUtils.js";
5
5
  import { BucketList } from "../buckets/BucketList.js";
6
6
  import * as __WEBPACK_EXTERNAL_MODULE__contexts_DataBrowserUICustomizationContext_js_f267b01c__ from "../../contexts/DataBrowserUICustomizationContext.js";
7
- jest.mock("../../contexts/DataBrowserUICustomizationContext");
8
7
  const mockUseDataBrowserUICustomization = (config = {})=>{
9
- jest.spyOn(__WEBPACK_EXTERNAL_MODULE__contexts_DataBrowserUICustomizationContext_js_f267b01c__, "useDataBrowserUICustomization").mockReturnValue(config);
8
+ jest.spyOn(__WEBPACK_EXTERNAL_MODULE__contexts_DataBrowserUICustomizationContext_js_f267b01c__, 'useDataBrowserUICustomization').mockReturnValue(config);
10
9
  };
11
10
  const renderBucketList = (props = {})=>{
12
11
  const Wrapper = createTestWrapper();
@@ -21,169 +20,169 @@ const renderBucketList = (props = {})=>{
21
20
  };
22
21
  const mockBuckets = [
23
22
  {
24
- Name: "test-bucket-1",
25
- CreationDate: new Date("2024-01-15T10:30:00Z")
23
+ Name: 'test-bucket-1',
24
+ CreationDate: new Date('2024-01-15T10:30:00Z')
26
25
  },
27
26
  {
28
- Name: "test-bucket-2",
29
- CreationDate: new Date("2024-01-16T14:45:00Z")
27
+ Name: 'test-bucket-2',
28
+ CreationDate: new Date('2024-01-16T14:45:00Z')
30
29
  },
31
30
  {
32
- Name: "test-bucket-3",
33
- CreationDate: new Date("2024-01-17T09:15:00Z")
31
+ Name: 'test-bucket-3',
32
+ CreationDate: new Date('2024-01-17T09:15:00Z')
34
33
  }
35
34
  ];
36
- describe("BucketList", ()=>{
35
+ describe('BucketList', ()=>{
37
36
  beforeEach(()=>{
38
37
  jest.clearAllMocks();
39
38
  mockOffsetSize(800, 600);
40
39
  mockUseDataBrowserUICustomization({});
41
40
  });
42
- it("shows a table with proper headers", ()=>{
41
+ it('shows a table with proper headers', ()=>{
43
42
  renderBucketList({
44
43
  buckets: mockBuckets
45
44
  });
46
- expect(screen.getByRole("grid")).toBeInTheDocument();
47
- expect(screen.getByText("Bucket Name")).toBeInTheDocument();
48
- expect(screen.getByText("Storage Location")).toBeInTheDocument();
49
- expect(screen.getByText("Created on")).toBeInTheDocument();
45
+ expect(screen.getByRole('grid')).toBeInTheDocument();
46
+ expect(screen.getByText('Bucket Name')).toBeInTheDocument();
47
+ expect(screen.getByText('Storage Location')).toBeInTheDocument();
48
+ expect(screen.getByText('Created on')).toBeInTheDocument();
50
49
  });
51
- it("displays buckets with their names as clickable links", ()=>{
50
+ it('displays buckets with their names as clickable links', ()=>{
52
51
  const onNavigateToBucket = jest.fn();
53
52
  renderBucketList({
54
53
  buckets: mockBuckets,
55
54
  onNavigateToBucket
56
55
  });
57
- expect(screen.getByText("test-bucket-1")).toBeInTheDocument();
58
- expect(screen.getByText("test-bucket-2")).toBeInTheDocument();
59
- expect(screen.getByText("test-bucket-3")).toBeInTheDocument();
60
- fireEvent.click(screen.getByText("test-bucket-1"));
61
- expect(onNavigateToBucket).toHaveBeenCalledWith("test-bucket-1");
56
+ expect(screen.getByText('test-bucket-1')).toBeInTheDocument();
57
+ expect(screen.getByText('test-bucket-2')).toBeInTheDocument();
58
+ expect(screen.getByText('test-bucket-3')).toBeInTheDocument();
59
+ fireEvent.click(screen.getByText('test-bucket-1'));
60
+ expect(onNavigateToBucket).toHaveBeenCalledWith('test-bucket-1');
62
61
  });
63
- it("displays creation dates in formatted format", ()=>{
62
+ it('displays creation dates in formatted format', ()=>{
64
63
  renderBucketList({
65
64
  buckets: mockBuckets
66
65
  });
67
- const gridElement = screen.getByRole("grid");
68
- expect(gridElement).toHaveTextContent("2024");
66
+ const gridElement = screen.getByRole('grid');
67
+ expect(gridElement).toHaveTextContent('2024');
69
68
  const dateElements = screen.getAllByText(/2024/);
70
69
  expect(dateElements.length).toBeGreaterThanOrEqual(3);
71
70
  });
72
- it("handles bucket selection when onBucketSelect is provided", ()=>{
71
+ it('handles bucket selection when onBucketSelect is provided', ()=>{
73
72
  const onBucketSelect = jest.fn();
74
73
  renderBucketList({
75
74
  buckets: mockBuckets,
76
75
  onBucketSelect
77
76
  });
78
- const rows = screen.getAllByRole("row");
77
+ const rows = screen.getAllByRole('row');
79
78
  fireEvent.click(rows[1]);
80
- expect(onBucketSelect).toHaveBeenCalledWith("test-bucket-3");
79
+ expect(onBucketSelect).toHaveBeenCalledWith('test-bucket-3');
81
80
  });
82
- it("shows selected bucket when selectedBucketName is provided", ()=>{
81
+ it('shows selected bucket when selectedBucketName is provided', ()=>{
83
82
  renderBucketList({
84
83
  buckets: mockBuckets,
85
- selectedBucketName: "test-bucket-2"
84
+ selectedBucketName: 'test-bucket-2'
86
85
  });
87
- const selectedRow = screen.getByRole("row", {
86
+ const selectedRow = screen.getByRole('row', {
88
87
  name: /test-bucket-2/
89
88
  });
90
- expect(selectedRow).toHaveAttribute("aria-selected", "true");
89
+ expect(selectedRow).toHaveAttribute('aria-selected', 'true');
91
90
  });
92
- it("handles create bucket button click", ()=>{
91
+ it('handles create bucket button click', ()=>{
93
92
  const onCreateBucket = jest.fn();
94
93
  renderBucketList({
95
94
  buckets: mockBuckets,
96
95
  onCreateBucket
97
96
  });
98
- const createButton = screen.getByRole("button", {
97
+ const createButton = screen.getByRole('button', {
99
98
  name: /create bucket/i
100
99
  });
101
100
  expect(createButton).toBeInTheDocument();
102
101
  fireEvent.click(createButton);
103
102
  expect(onCreateBucket).toHaveBeenCalled();
104
103
  });
105
- it("shows search functionality", ()=>{
104
+ it('shows search functionality', ()=>{
106
105
  renderBucketList({
107
106
  buckets: mockBuckets
108
107
  });
109
- const searchInput = screen.getByRole("searchbox");
108
+ const searchInput = screen.getByRole('searchbox');
110
109
  expect(searchInput).toBeInTheDocument();
111
- expect(searchInput).toHaveAttribute("placeholder", "Example: Search");
110
+ expect(searchInput).toHaveAttribute('placeholder', 'Example: Search');
112
111
  });
113
- it("handles empty buckets list", ()=>{
112
+ it('handles empty buckets list', ()=>{
114
113
  renderBucketList({
115
114
  buckets: []
116
115
  });
117
- expect(screen.getByRole("grid")).toBeInTheDocument();
118
- expect(screen.getByText("Bucket Name")).toBeInTheDocument();
116
+ expect(screen.getByRole('grid')).toBeInTheDocument();
117
+ expect(screen.getByText('Bucket Name')).toBeInTheDocument();
119
118
  });
120
- it("handles buckets without names gracefully", ()=>{
119
+ it('handles buckets without names gracefully', ()=>{
121
120
  const bucketsWithMissingNames = [
122
121
  {
123
122
  Name: void 0,
124
123
  CreationDate: new Date()
125
124
  },
126
125
  {
127
- Name: "",
126
+ Name: '',
128
127
  CreationDate: new Date()
129
128
  },
130
129
  {
131
- Name: "valid-bucket",
130
+ Name: 'valid-bucket',
132
131
  CreationDate: new Date()
133
132
  }
134
133
  ];
135
134
  renderBucketList({
136
135
  buckets: bucketsWithMissingNames
137
136
  });
138
- expect(screen.getByText("valid-bucket")).toBeInTheDocument();
139
- const dashes = screen.getAllByText("-");
137
+ expect(screen.getByText('valid-bucket')).toBeInTheDocument();
138
+ const dashes = screen.getAllByText('-');
140
139
  expect(dashes.length).toBeGreaterThan(0);
141
140
  });
142
- it("handles buckets without creation dates", ()=>{
141
+ it('handles buckets without creation dates', ()=>{
143
142
  const bucketsWithoutDates = [
144
143
  {
145
- Name: "bucket-1",
144
+ Name: 'bucket-1',
146
145
  CreationDate: void 0
147
146
  },
148
147
  {
149
- Name: "bucket-2"
148
+ Name: 'bucket-2'
150
149
  }
151
150
  ];
152
151
  renderBucketList({
153
152
  buckets: bucketsWithoutDates
154
153
  });
155
- expect(screen.getByText("bucket-1")).toBeInTheDocument();
156
- expect(screen.getByText("bucket-2")).toBeInTheDocument();
154
+ expect(screen.getByText('bucket-1')).toBeInTheDocument();
155
+ expect(screen.getByText('bucket-2')).toBeInTheDocument();
157
156
  });
158
- it("works when no callbacks are provided", ()=>{
157
+ it('works when no callbacks are provided', ()=>{
159
158
  renderBucketList({
160
159
  buckets: mockBuckets
161
160
  });
162
161
  expect(()=>{
163
- fireEvent.click(screen.getByText("test-bucket-1"));
164
- const createButton = screen.getByRole("button", {
162
+ fireEvent.click(screen.getByText('test-bucket-1'));
163
+ const createButton = screen.getByRole('button', {
165
164
  name: /create bucket/i
166
165
  });
167
166
  fireEvent.click(createButton);
168
167
  }).not.toThrow();
169
168
  });
170
- it("handles different bucket statuses", ()=>{
169
+ it('handles different bucket statuses', ()=>{
171
170
  expect(()=>{
172
171
  renderBucketList({
173
172
  buckets: mockBuckets,
174
- bucketStatus: "loading"
173
+ bucketStatus: 'loading'
175
174
  });
176
175
  renderBucketList({
177
176
  buckets: mockBuckets,
178
- bucketStatus: "error"
177
+ bucketStatus: 'error'
179
178
  });
180
179
  renderBucketList({
181
180
  buckets: mockBuckets,
182
- bucketStatus: "success"
181
+ bucketStatus: 'success'
183
182
  });
184
183
  }).not.toThrow();
185
184
  });
186
- it("prevents event propagation when clicking bucket name link", ()=>{
185
+ it('prevents event propagation when clicking bucket name link', ()=>{
187
186
  const onNavigateToBucket = jest.fn();
188
187
  const onBucketSelect = jest.fn();
189
188
  renderBucketList({
@@ -191,23 +190,23 @@ describe("BucketList", ()=>{
191
190
  onNavigateToBucket,
192
191
  onBucketSelect
193
192
  });
194
- fireEvent.click(screen.getByText("test-bucket-1"));
195
- expect(onNavigateToBucket).toHaveBeenCalledWith("test-bucket-1");
193
+ fireEvent.click(screen.getByText('test-bucket-1'));
194
+ expect(onNavigateToBucket).toHaveBeenCalledWith('test-bucket-1');
196
195
  expect(onBucketSelect).not.toHaveBeenCalled();
197
196
  });
198
- it("does not select already selected bucket", ()=>{
197
+ it('does not select already selected bucket', ()=>{
199
198
  const onBucketSelect = jest.fn();
200
199
  renderBucketList({
201
200
  buckets: mockBuckets,
202
- selectedBucketName: "test-bucket-1",
201
+ selectedBucketName: 'test-bucket-1',
203
202
  onBucketSelect
204
203
  });
205
- const bucketName = screen.getByText("test-bucket-1");
204
+ const bucketName = screen.getByText('test-bucket-1');
206
205
  fireEvent.click(bucketName.closest('[role="row"]') || bucketName);
207
206
  expect(onBucketSelect).not.toHaveBeenCalled();
208
207
  });
209
- describe("extraBucketListColumns support", ()=>{
210
- it("renders extra columns when extraBucketListColumns is configured", ()=>{
208
+ describe('extraBucketListColumns support', ()=>{
209
+ it('renders extra columns when extraBucketListColumns is configured', ()=>{
211
210
  const CustomColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
212
211
  children: [
213
212
  "Custom data for ",
@@ -217,8 +216,8 @@ describe("BucketList", ()=>{
217
216
  mockUseDataBrowserUICustomization({
218
217
  extraBucketListColumns: [
219
218
  {
220
- id: "customData",
221
- header: "Custom Data",
219
+ id: 'customData',
220
+ header: 'Custom Data',
222
221
  render: CustomColumn
223
222
  }
224
223
  ]
@@ -226,12 +225,12 @@ describe("BucketList", ()=>{
226
225
  renderBucketList({
227
226
  buckets: mockBuckets
228
227
  });
229
- expect(screen.getByText("Custom Data")).toBeInTheDocument();
230
- expect(screen.getByText("Custom data for test-bucket-1")).toBeInTheDocument();
231
- expect(screen.getByText("Custom data for test-bucket-2")).toBeInTheDocument();
232
- expect(screen.getByText("Custom data for test-bucket-3")).toBeInTheDocument();
228
+ expect(screen.getByText('Custom Data')).toBeInTheDocument();
229
+ expect(screen.getByText('Custom data for test-bucket-1')).toBeInTheDocument();
230
+ expect(screen.getByText('Custom data for test-bucket-2')).toBeInTheDocument();
231
+ expect(screen.getByText('Custom data for test-bucket-3')).toBeInTheDocument();
233
232
  });
234
- it("renders multiple extra columns in correct order", ()=>{
233
+ it('renders multiple extra columns in correct order', ()=>{
235
234
  const ColumnA = ()=>/*#__PURE__*/ jsx("span", {
236
235
  children: "A"
237
236
  });
@@ -241,13 +240,13 @@ describe("BucketList", ()=>{
241
240
  mockUseDataBrowserUICustomization({
242
241
  extraBucketListColumns: [
243
242
  {
244
- id: "columnA",
245
- header: "Column A",
243
+ id: 'columnA',
244
+ header: 'Column A',
246
245
  render: ColumnA
247
246
  },
248
247
  {
249
- id: "columnB",
250
- header: "Column B",
248
+ id: 'columnB',
249
+ header: 'Column B',
251
250
  render: ColumnB
252
251
  }
253
252
  ]
@@ -255,35 +254,35 @@ describe("BucketList", ()=>{
255
254
  renderBucketList({
256
255
  buckets: mockBuckets
257
256
  });
258
- const headers = screen.getAllByRole("columnheader");
257
+ const headers = screen.getAllByRole('columnheader');
259
258
  const headerTexts = headers.map((h)=>h.textContent);
260
- expect(headerTexts).toContain("Bucket Name");
261
- expect(headerTexts).toContain("Storage Location");
262
- expect(headerTexts).toContain("Column A");
263
- expect(headerTexts).toContain("Column B");
264
- expect(headerTexts).toContain("Created on");
265
- const bucketNameIndex = headerTexts.indexOf("Bucket Name");
266
- const storageLocationIndex = headerTexts.indexOf("Storage Location");
267
- const columnAIndex = headerTexts.indexOf("Column A");
268
- const columnBIndex = headerTexts.indexOf("Column B");
269
- const createdOnIndex = headerTexts.indexOf("Created on");
259
+ expect(headerTexts).toContain('Bucket Name');
260
+ expect(headerTexts).toContain('Storage Location');
261
+ expect(headerTexts).toContain('Column A');
262
+ expect(headerTexts).toContain('Column B');
263
+ expect(headerTexts).toContain('Created on');
264
+ const bucketNameIndex = headerTexts.indexOf('Bucket Name');
265
+ const storageLocationIndex = headerTexts.indexOf('Storage Location');
266
+ const columnAIndex = headerTexts.indexOf('Column A');
267
+ const columnBIndex = headerTexts.indexOf('Column B');
268
+ const createdOnIndex = headerTexts.indexOf('Created on');
270
269
  expect(bucketNameIndex).toBeLessThan(storageLocationIndex);
271
270
  expect(storageLocationIndex).toBeLessThan(columnAIndex);
272
271
  expect(columnAIndex).toBeLessThan(columnBIndex);
273
272
  expect(columnBIndex).toBeLessThan(createdOnIndex);
274
273
  });
275
- it("works without extra columns (shows default columns)", ()=>{
274
+ it('works without extra columns (shows default columns)', ()=>{
276
275
  renderBucketList({
277
276
  buckets: mockBuckets
278
277
  });
279
- const headers = screen.getAllByRole("columnheader");
278
+ const headers = screen.getAllByRole('columnheader');
280
279
  const headerTexts = headers.map((h)=>h.textContent);
281
- expect(headerTexts).toContain("Bucket Name");
282
- expect(headerTexts).toContain("Storage Location");
283
- expect(headerTexts).toContain("Created on");
280
+ expect(headerTexts).toContain('Bucket Name');
281
+ expect(headerTexts).toContain('Storage Location');
282
+ expect(headerTexts).toContain('Created on');
284
283
  expect(headerTexts).toHaveLength(3);
285
284
  });
286
- it("receives full bucket data in render component", ()=>{
285
+ it('receives full bucket data in render component', ()=>{
287
286
  const CustomColumn = jest.fn(({ data })=>/*#__PURE__*/ jsxs("span", {
288
287
  children: [
289
288
  "Bucket ",
@@ -293,8 +292,8 @@ describe("BucketList", ()=>{
293
292
  mockUseDataBrowserUICustomization({
294
293
  extraBucketListColumns: [
295
294
  {
296
- id: "customColumn",
297
- header: "Custom",
295
+ id: 'customColumn',
296
+ header: 'Custom',
298
297
  render: CustomColumn
299
298
  }
300
299
  ]
@@ -306,7 +305,7 @@ describe("BucketList", ()=>{
306
305
  data: mockBuckets[0]
307
306
  }), expect.anything());
308
307
  });
309
- it("supports custom column widths", ()=>{
308
+ it('supports custom column widths', ()=>{
310
309
  const CustomColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
311
310
  children: [
312
311
  "Width: ",
@@ -316,9 +315,9 @@ describe("BucketList", ()=>{
316
315
  mockUseDataBrowserUICustomization({
317
316
  extraBucketListColumns: [
318
317
  {
319
- id: "customWidth",
320
- header: "Custom Width",
321
- width: "200px",
318
+ id: 'customWidth',
319
+ header: 'Custom Width',
320
+ width: '200px',
322
321
  render: CustomColumn
323
322
  }
324
323
  ]
@@ -326,10 +325,10 @@ describe("BucketList", ()=>{
326
325
  renderBucketList({
327
326
  buckets: mockBuckets
328
327
  });
329
- expect(screen.getByText("Custom Width")).toBeInTheDocument();
330
- expect(screen.getByText("Width: test-bucket-1")).toBeInTheDocument();
328
+ expect(screen.getByText('Custom Width')).toBeInTheDocument();
329
+ expect(screen.getByText('Width: test-bucket-1')).toBeInTheDocument();
331
330
  });
332
- it("supports custom columns with IDs not in Bucket type (e.g., computed data)", ()=>{
331
+ it('supports custom columns with IDs not in Bucket type (e.g., computed data)', ()=>{
333
332
  const DataUsedColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
334
333
  children: [
335
334
  "Data used for ",
@@ -339,8 +338,8 @@ describe("BucketList", ()=>{
339
338
  mockUseDataBrowserUICustomization({
340
339
  extraBucketListColumns: [
341
340
  {
342
- id: "dataUsed",
343
- header: "Data Used",
341
+ id: 'dataUsed',
342
+ header: 'Data Used',
344
343
  render: DataUsedColumn
345
344
  }
346
345
  ]
@@ -348,12 +347,12 @@ describe("BucketList", ()=>{
348
347
  renderBucketList({
349
348
  buckets: mockBuckets
350
349
  });
351
- expect(screen.getByText("Data Used")).toBeInTheDocument();
352
- expect(screen.getByText("Data used for test-bucket-1")).toBeInTheDocument();
353
- expect(screen.getByText("Data used for test-bucket-2")).toBeInTheDocument();
354
- expect(screen.getByText("Data used for test-bucket-3")).toBeInTheDocument();
350
+ expect(screen.getByText('Data Used')).toBeInTheDocument();
351
+ expect(screen.getByText('Data used for test-bucket-1')).toBeInTheDocument();
352
+ expect(screen.getByText('Data used for test-bucket-2')).toBeInTheDocument();
353
+ expect(screen.getByText('Data used for test-bucket-3')).toBeInTheDocument();
355
354
  });
356
- it("supports mixing native and custom column IDs", ()=>{
355
+ it('supports mixing native and custom column IDs', ()=>{
357
356
  const RegionColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
358
357
  children: [
359
358
  "Region: ",
@@ -369,13 +368,13 @@ describe("BucketList", ()=>{
369
368
  mockUseDataBrowserUICustomization({
370
369
  extraBucketListColumns: [
371
370
  {
372
- id: "location",
373
- header: "Region",
371
+ id: 'location',
372
+ header: 'Region',
374
373
  render: RegionColumn
375
374
  },
376
375
  {
377
- id: "customMetrics",
378
- header: "Metrics",
376
+ id: 'customMetrics',
377
+ header: 'Metrics',
379
378
  render: MetricsColumn
380
379
  }
381
380
  ]
@@ -383,13 +382,13 @@ describe("BucketList", ()=>{
383
382
  renderBucketList({
384
383
  buckets: mockBuckets
385
384
  });
386
- expect(screen.queryByText("Storage Location")).not.toBeInTheDocument();
387
- expect(screen.getByText("Region")).toBeInTheDocument();
388
- expect(screen.getByText("Metrics")).toBeInTheDocument();
389
- expect(screen.getByText("Region: test-bucket-1")).toBeInTheDocument();
390
- expect(screen.getByText("Metrics for test-bucket-1")).toBeInTheDocument();
385
+ expect(screen.queryByText('Storage Location')).not.toBeInTheDocument();
386
+ expect(screen.getByText('Region')).toBeInTheDocument();
387
+ expect(screen.getByText('Metrics')).toBeInTheDocument();
388
+ expect(screen.getByText('Region: test-bucket-1')).toBeInTheDocument();
389
+ expect(screen.getByText('Metrics for test-bucket-1')).toBeInTheDocument();
391
390
  });
392
- it("can replace default columns by using matching IDs", ()=>{
391
+ it('can replace default columns by using matching IDs', ()=>{
393
392
  const CustomLocationColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
394
393
  children: [
395
394
  "Custom location for ",
@@ -399,8 +398,8 @@ describe("BucketList", ()=>{
399
398
  mockUseDataBrowserUICustomization({
400
399
  extraBucketListColumns: [
401
400
  {
402
- id: "location",
403
- header: "Custom Location",
401
+ id: 'location',
402
+ header: 'Custom Location',
404
403
  render: CustomLocationColumn
405
404
  }
406
405
  ]
@@ -408,13 +407,13 @@ describe("BucketList", ()=>{
408
407
  renderBucketList({
409
408
  buckets: mockBuckets
410
409
  });
411
- expect(screen.getByText("Custom Location")).toBeInTheDocument();
412
- expect(screen.queryByText("Storage Location")).not.toBeInTheDocument();
413
- expect(screen.getByText("Custom location for test-bucket-1")).toBeInTheDocument();
414
- expect(screen.getByText("Custom location for test-bucket-2")).toBeInTheDocument();
415
- expect(screen.getByText("Custom location for test-bucket-3")).toBeInTheDocument();
410
+ expect(screen.getByText('Custom Location')).toBeInTheDocument();
411
+ expect(screen.queryByText('Storage Location')).not.toBeInTheDocument();
412
+ expect(screen.getByText('Custom location for test-bucket-1')).toBeInTheDocument();
413
+ expect(screen.getByText('Custom location for test-bucket-2')).toBeInTheDocument();
414
+ expect(screen.getByText('Custom location for test-bucket-3')).toBeInTheDocument();
416
415
  });
417
- it("can replace multiple default columns simultaneously", ()=>{
416
+ it('can replace multiple default columns simultaneously', ()=>{
418
417
  const CustomLocationColumn = ({ data })=>/*#__PURE__*/ jsxs("span", {
419
418
  children: [
420
419
  "Loc: ",
@@ -430,13 +429,13 @@ describe("BucketList", ()=>{
430
429
  mockUseDataBrowserUICustomization({
431
430
  extraBucketListColumns: [
432
431
  {
433
- id: "location",
434
- header: "Loc",
432
+ id: 'location',
433
+ header: 'Loc',
435
434
  render: CustomLocationColumn
436
435
  },
437
436
  {
438
- id: "date",
439
- header: "Date",
437
+ id: 'date',
438
+ header: 'Date',
440
439
  render: CustomDateColumn
441
440
  }
442
441
  ]
@@ -444,13 +443,13 @@ describe("BucketList", ()=>{
444
443
  renderBucketList({
445
444
  buckets: mockBuckets
446
445
  });
447
- expect(screen.getByText("Loc")).toBeInTheDocument();
448
- expect(screen.getByText("Date")).toBeInTheDocument();
449
- expect(screen.queryByText("Storage Location")).not.toBeInTheDocument();
450
- expect(screen.queryByText("Created on")).not.toBeInTheDocument();
451
- expect(screen.getByText("Loc: test-bucket-1")).toBeInTheDocument();
446
+ expect(screen.getByText('Loc')).toBeInTheDocument();
447
+ expect(screen.getByText('Date')).toBeInTheDocument();
448
+ expect(screen.queryByText('Storage Location')).not.toBeInTheDocument();
449
+ expect(screen.queryByText('Created on')).not.toBeInTheDocument();
450
+ expect(screen.getByText('Loc: test-bucket-1')).toBeInTheDocument();
452
451
  });
453
- it("maintains correct column order when replacing and adding columns", ()=>{
452
+ it('maintains correct column order when replacing and adding columns', ()=>{
454
453
  const CustomLocationColumn = ()=>/*#__PURE__*/ jsx("span", {
455
454
  children: "Custom Loc"
456
455
  });
@@ -460,13 +459,13 @@ describe("BucketList", ()=>{
460
459
  mockUseDataBrowserUICustomization({
461
460
  extraBucketListColumns: [
462
461
  {
463
- id: "location",
464
- header: "Custom Location",
462
+ id: 'location',
463
+ header: 'Custom Location',
465
464
  render: CustomLocationColumn
466
465
  },
467
466
  {
468
- id: "extraData",
469
- header: "Extra Data",
467
+ id: 'extraData',
468
+ header: 'Extra Data',
470
469
  render: ExtraColumn
471
470
  }
472
471
  ]
@@ -474,27 +473,27 @@ describe("BucketList", ()=>{
474
473
  renderBucketList({
475
474
  buckets: mockBuckets
476
475
  });
477
- const headers = screen.getAllByRole("columnheader");
476
+ const headers = screen.getAllByRole('columnheader');
478
477
  const headerTexts = headers.map((h)=>h.textContent);
479
- const bucketNameIndex = headerTexts.indexOf("Bucket Name");
480
- const customLocationIndex = headerTexts.indexOf("Custom Location");
481
- const extraDataIndex = headerTexts.indexOf("Extra Data");
482
- const createdOnIndex = headerTexts.indexOf("Created on");
478
+ const bucketNameIndex = headerTexts.indexOf('Bucket Name');
479
+ const customLocationIndex = headerTexts.indexOf('Custom Location');
480
+ const extraDataIndex = headerTexts.indexOf('Extra Data');
481
+ const createdOnIndex = headerTexts.indexOf('Created on');
483
482
  expect(bucketNameIndex).toBe(0);
484
483
  expect(customLocationIndex).toBe(1);
485
484
  expect(extraDataIndex).toBe(2);
486
485
  expect(createdOnIndex).toBe(3);
487
486
  });
488
487
  });
489
- describe("extraBucketListActions support", ()=>{
490
- it("renders extra actions when extraBucketListActions is configured", ()=>{
488
+ describe('extraBucketListActions support', ()=>{
489
+ it('renders extra actions when extraBucketListActions is configured', ()=>{
491
490
  const CustomAction = ()=>/*#__PURE__*/ jsx("button", {
492
491
  children: "Custom Action"
493
492
  });
494
493
  mockUseDataBrowserUICustomization({
495
494
  extraBucketListActions: [
496
495
  {
497
- id: "customAction",
496
+ id: 'customAction',
498
497
  render: CustomAction
499
498
  }
500
499
  ]
@@ -502,9 +501,9 @@ describe("BucketList", ()=>{
502
501
  renderBucketList({
503
502
  buckets: mockBuckets
504
503
  });
505
- expect(screen.getByText("Custom Action")).toBeInTheDocument();
504
+ expect(screen.getByText('Custom Action')).toBeInTheDocument();
506
505
  });
507
- it("renders multiple extra actions", ()=>{
506
+ it('renders multiple extra actions', ()=>{
508
507
  const Action1 = ()=>/*#__PURE__*/ jsx("button", {
509
508
  children: "Action 1"
510
509
  });
@@ -514,11 +513,11 @@ describe("BucketList", ()=>{
514
513
  mockUseDataBrowserUICustomization({
515
514
  extraBucketListActions: [
516
515
  {
517
- id: "action1",
516
+ id: 'action1',
518
517
  render: Action1
519
518
  },
520
519
  {
521
- id: "action2",
520
+ id: 'action2',
522
521
  render: Action2
523
522
  }
524
523
  ]
@@ -526,17 +525,17 @@ describe("BucketList", ()=>{
526
525
  renderBucketList({
527
526
  buckets: mockBuckets
528
527
  });
529
- expect(screen.getByText("Action 1")).toBeInTheDocument();
530
- expect(screen.getByText("Action 2")).toBeInTheDocument();
528
+ expect(screen.getByText('Action 1')).toBeInTheDocument();
529
+ expect(screen.getByText('Action 2')).toBeInTheDocument();
531
530
  });
532
- it("renders actions alongside default Create Bucket button", ()=>{
531
+ it('renders actions alongside default Create Bucket button', ()=>{
533
532
  const CustomAction = ()=>/*#__PURE__*/ jsx("button", {
534
533
  children: "Export"
535
534
  });
536
535
  mockUseDataBrowserUICustomization({
537
536
  extraBucketListActions: [
538
537
  {
539
- id: "export",
538
+ id: 'export',
540
539
  render: CustomAction
541
540
  }
542
541
  ]
@@ -545,15 +544,15 @@ describe("BucketList", ()=>{
545
544
  buckets: mockBuckets,
546
545
  onCreateBucket: jest.fn()
547
546
  });
548
- expect(screen.getByText("Create Bucket")).toBeInTheDocument();
549
- expect(screen.getByText("Export")).toBeInTheDocument();
547
+ expect(screen.getByText('Create Bucket')).toBeInTheDocument();
548
+ expect(screen.getByText('Export')).toBeInTheDocument();
550
549
  });
551
- it("works without extra actions", ()=>{
550
+ it('works without extra actions', ()=>{
552
551
  renderBucketList({
553
552
  buckets: mockBuckets,
554
553
  onCreateBucket: jest.fn()
555
554
  });
556
- expect(screen.getByText("Create Bucket")).toBeInTheDocument();
555
+ expect(screen.getByText('Create Bucket')).toBeInTheDocument();
557
556
  });
558
557
  it("can replace default Create Bucket action by using 'createBucket' ID", ()=>{
559
558
  const CustomCreateAction = ()=>/*#__PURE__*/ jsx("button", {
@@ -562,7 +561,7 @@ describe("BucketList", ()=>{
562
561
  mockUseDataBrowserUICustomization({
563
562
  extraBucketListActions: [
564
563
  {
565
- id: "createBucket",
564
+ id: 'createBucket',
566
565
  render: CustomCreateAction
567
566
  }
568
567
  ]
@@ -571,10 +570,10 @@ describe("BucketList", ()=>{
571
570
  buckets: mockBuckets,
572
571
  onCreateBucket: jest.fn()
573
572
  });
574
- expect(screen.getByText("Custom Create")).toBeInTheDocument();
575
- expect(screen.queryByText("Create Bucket")).not.toBeInTheDocument();
573
+ expect(screen.getByText('Custom Create')).toBeInTheDocument();
574
+ expect(screen.queryByText('Create Bucket')).not.toBeInTheDocument();
576
575
  });
577
- it("can mix replacing default action and adding new actions", ()=>{
576
+ it('can mix replacing default action and adding new actions', ()=>{
578
577
  const CustomCreateAction = ()=>/*#__PURE__*/ jsx("button", {
579
578
  children: "Custom Create"
580
579
  });
@@ -584,11 +583,11 @@ describe("BucketList", ()=>{
584
583
  mockUseDataBrowserUICustomization({
585
584
  extraBucketListActions: [
586
585
  {
587
- id: "createBucket",
586
+ id: 'createBucket',
588
587
  render: CustomCreateAction
589
588
  },
590
589
  {
591
- id: "export",
590
+ id: 'export',
592
591
  render: ExportAction
593
592
  }
594
593
  ]
@@ -597,11 +596,11 @@ describe("BucketList", ()=>{
597
596
  buckets: mockBuckets,
598
597
  onCreateBucket: jest.fn()
599
598
  });
600
- expect(screen.getByText("Custom Create")).toBeInTheDocument();
601
- expect(screen.getByText("Export")).toBeInTheDocument();
602
- expect(screen.queryByText("Create Bucket")).not.toBeInTheDocument();
599
+ expect(screen.getByText('Custom Create')).toBeInTheDocument();
600
+ expect(screen.getByText('Export')).toBeInTheDocument();
601
+ expect(screen.queryByText('Create Bucket')).not.toBeInTheDocument();
603
602
  });
604
- it("maintains correct action order when replacing and adding actions", ()=>{
603
+ it('maintains correct action order when replacing and adding actions', ()=>{
605
604
  const CustomCreateAction = ()=>/*#__PURE__*/ jsx("button", {
606
605
  children: "Custom Create"
607
606
  });
@@ -614,15 +613,15 @@ describe("BucketList", ()=>{
614
613
  mockUseDataBrowserUICustomization({
615
614
  extraBucketListActions: [
616
615
  {
617
- id: "createBucket",
616
+ id: 'createBucket',
618
617
  render: CustomCreateAction
619
618
  },
620
619
  {
621
- id: "action1",
620
+ id: 'action1',
622
621
  render: Action1
623
622
  },
624
623
  {
625
- id: "action2",
624
+ id: 'action2',
626
625
  render: Action2
627
626
  }
628
627
  ]
@@ -631,10 +630,10 @@ describe("BucketList", ()=>{
631
630
  buckets: mockBuckets,
632
631
  onCreateBucket: jest.fn()
633
632
  });
634
- const buttons = screen.getAllByRole("button");
635
- expect(buttons[0]).toHaveTextContent("Custom Create");
636
- expect(buttons[1]).toHaveTextContent("Action 1");
637
- expect(buttons[2]).toHaveTextContent("Action 2");
633
+ const buttons = screen.getAllByRole('button');
634
+ expect(buttons[0]).toHaveTextContent('Custom Create');
635
+ expect(buttons[1]).toHaveTextContent('Action 1');
636
+ expect(buttons[2]).toHaveTextContent('Action 2');
638
637
  });
639
638
  });
640
639
  });