@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
@@ -6,9 +6,9 @@ import { ObjectSummary } from "../ObjectSummary.js";
6
6
  import { DataBrowserUICustomizationProvider } from "../../../../contexts/DataBrowserUICustomizationContext.js";
7
7
  import { useObjectLegalHold, useObjectMetadata, useObjectRetention, useSetObjectLegalHold } from "../../../../hooks/index.js";
8
8
  import { useToast } from "@scality/core-ui";
9
- jest.mock("../../../../hooks");
10
- jest.mock("@scality/core-ui", ()=>{
11
- const actual = jest.requireActual("@scality/core-ui");
9
+ jest.mock('../../../../hooks');
10
+ jest.mock('@scality/core-ui', ()=>{
11
+ const actual = jest.requireActual('@scality/core-ui');
12
12
  return {
13
13
  ...actual,
14
14
  useToast: jest.fn()
@@ -20,34 +20,34 @@ const mockUseObjectRetention = jest.mocked(useObjectRetention);
20
20
  const mockUseSetObjectLegalHold = jest.mocked(useSetObjectLegalHold);
21
21
  const mockUseToast = jest.mocked(useToast);
22
22
  const mockObjectMetadata = {
23
- VersionId: "test-version-id",
23
+ VersionId: 'test-version-id',
24
24
  ContentLength: 1024,
25
- LastModified: new Date("2024-01-01"),
25
+ LastModified: new Date('2024-01-01'),
26
26
  ETag: '"abc123def456"'
27
27
  };
28
28
  const mockLegalHoldData = {
29
29
  LegalHold: {
30
- Status: "OFF"
30
+ Status: 'OFF'
31
31
  }
32
32
  };
33
33
  const mockRetentionData = {
34
34
  Retention: {
35
- Mode: "GOVERNANCE",
36
- RetainUntilDate: "2024-12-31T23:59:59Z"
35
+ Mode: 'GOVERNANCE',
36
+ RetainUntilDate: '2024-12-31T23:59:59Z'
37
37
  }
38
38
  };
39
39
  const setupMockDefaults = ()=>{
40
40
  mockUseObjectMetadata.mockReturnValue({
41
41
  data: mockObjectMetadata,
42
- status: "success"
42
+ status: 'success'
43
43
  });
44
44
  mockUseObjectLegalHold.mockReturnValue({
45
45
  data: mockLegalHoldData,
46
- status: "success"
46
+ status: 'success'
47
47
  });
48
48
  mockUseObjectRetention.mockReturnValue({
49
49
  data: mockRetentionData,
50
- status: "success"
50
+ status: 'success'
51
51
  });
52
52
  mockUseSetObjectLegalHold.mockReturnValue({
53
53
  mutate: jest.fn(),
@@ -76,235 +76,235 @@ const renderWithProviders = (ui, { customizationConfig = {} } = {})=>{
76
76
  })
77
77
  }));
78
78
  };
79
- describe("ObjectSummary", ()=>{
79
+ describe('ObjectSummary', ()=>{
80
80
  const defaultProps = {
81
- bucketName: "test-bucket",
82
- objectKey: "test-object.txt"
81
+ bucketName: 'test-bucket',
82
+ objectKey: 'test-object.txt'
83
83
  };
84
84
  beforeEach(()=>{
85
85
  jest.clearAllMocks();
86
86
  setupMockDefaults();
87
87
  });
88
- describe("Default Fields", ()=>{
89
- describe("Information Section", ()=>{
90
- it("should render all default information fields", ()=>{
88
+ describe('Default Fields', ()=>{
89
+ describe('Information Section', ()=>{
90
+ it('should render all default information fields', ()=>{
91
91
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
92
92
  ...defaultProps
93
93
  }));
94
- expect(screen.getByText("Information")).toBeInTheDocument();
95
- expect(screen.getByText("Name")).toBeInTheDocument();
96
- expect(screen.getByText("Version ID")).toBeInTheDocument();
97
- expect(screen.getByText("Size")).toBeInTheDocument();
98
- expect(screen.getByText("Modified On")).toBeInTheDocument();
99
- expect(screen.getByText("ETag")).toBeInTheDocument();
100
- expect(screen.getByText("Location")).toBeInTheDocument();
101
- });
102
- it("should display object name", ()=>{
94
+ expect(screen.getByText('Information')).toBeInTheDocument();
95
+ expect(screen.getByText('Name')).toBeInTheDocument();
96
+ expect(screen.getByText('Version ID')).toBeInTheDocument();
97
+ expect(screen.getByText('Size')).toBeInTheDocument();
98
+ expect(screen.getByText('Modified On')).toBeInTheDocument();
99
+ expect(screen.getByText('ETag')).toBeInTheDocument();
100
+ expect(screen.getByText('Location')).toBeInTheDocument();
101
+ });
102
+ it('should display object name', ()=>{
103
103
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
104
104
  ...defaultProps
105
105
  }));
106
- expect(screen.getByText("test-object.txt")).toBeInTheDocument();
106
+ expect(screen.getByText('test-object.txt')).toBeInTheDocument();
107
107
  });
108
- it("should display version ID from metadata", ()=>{
108
+ it('should display version ID from metadata', ()=>{
109
109
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
110
110
  ...defaultProps
111
111
  }));
112
- expect(screen.getByText("test-version-id")).toBeInTheDocument();
112
+ expect(screen.getByText('test-version-id')).toBeInTheDocument();
113
113
  });
114
- it("should display formatted size", ()=>{
114
+ it('should display formatted size', ()=>{
115
115
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
116
116
  ...defaultProps
117
117
  }));
118
118
  expect(screen.getByText(/1 KB/i)).toBeInTheDocument();
119
119
  });
120
- it("should display formatted date", ()=>{
120
+ it('should display formatted date', ()=>{
121
121
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
122
122
  ...defaultProps
123
123
  }));
124
124
  const dateElements = screen.getAllByText(/2024/);
125
125
  expect(dateElements.length).toBeGreaterThan(0);
126
126
  });
127
- it("should display ETag without quotes", ()=>{
127
+ it('should display ETag without quotes', ()=>{
128
128
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
129
129
  ...defaultProps
130
130
  }));
131
- expect(screen.getByText("abc123def456")).toBeInTheDocument();
131
+ expect(screen.getByText('abc123def456')).toBeInTheDocument();
132
132
  });
133
- it("should display default location", ()=>{
133
+ it('should display default location', ()=>{
134
134
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
135
135
  ...defaultProps
136
136
  }));
137
- expect(screen.getByText("default")).toBeInTheDocument();
137
+ expect(screen.getByText('default')).toBeInTheDocument();
138
138
  });
139
139
  });
140
- describe("Data Protection Section", ()=>{
141
- it("should render data protection section", ()=>{
140
+ describe('Data Protection Section', ()=>{
141
+ it('should render data protection section', ()=>{
142
142
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
143
143
  ...defaultProps
144
144
  }));
145
- expect(screen.getByText("Data protection")).toBeInTheDocument();
145
+ expect(screen.getByText('Data protection')).toBeInTheDocument();
146
146
  });
147
- it("should display retention lock information", ()=>{
147
+ it('should display retention lock information', ()=>{
148
148
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
149
149
  ...defaultProps
150
150
  }));
151
- expect(screen.getByText("Lock")).toBeInTheDocument();
151
+ expect(screen.getByText('Lock')).toBeInTheDocument();
152
152
  expect(screen.getByText(/GOVERNANCE/)).toBeInTheDocument();
153
153
  expect(screen.getByText(/until/)).toBeInTheDocument();
154
154
  });
155
- it("should display legal hold toggle when available", ()=>{
155
+ it('should display legal hold toggle when available', ()=>{
156
156
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
157
157
  ...defaultProps
158
158
  }));
159
- expect(screen.getByText("Legal Hold")).toBeInTheDocument();
160
- expect(screen.getByRole("checkbox")).toBeInTheDocument();
159
+ expect(screen.getByText('Legal Hold')).toBeInTheDocument();
160
+ expect(screen.getByRole('checkbox')).toBeInTheDocument();
161
161
  });
162
- it("should show legal hold as inactive by default", ()=>{
162
+ it('should show legal hold as inactive by default', ()=>{
163
163
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
164
164
  ...defaultProps
165
165
  }));
166
- const toggle = screen.getByRole("checkbox");
166
+ const toggle = screen.getByRole('checkbox');
167
167
  expect(toggle).not.toBeChecked();
168
168
  });
169
169
  });
170
170
  });
171
- describe("Loading States", ()=>{
172
- it("should show loader for pending metadata", ()=>{
171
+ describe('Loading States', ()=>{
172
+ it('should show loader for pending metadata', ()=>{
173
173
  mockUseObjectMetadata.mockReturnValueOnce({
174
174
  data: void 0,
175
- status: "pending"
175
+ status: 'pending'
176
176
  });
177
177
  const { container } = renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
178
178
  ...defaultProps
179
179
  }));
180
- const loaders = container.querySelectorAll("svg");
180
+ const loaders = container.querySelectorAll('svg');
181
181
  expect(loaders.length).toBeGreaterThan(0);
182
182
  });
183
- it("should show error state for failed metadata", ()=>{
183
+ it('should show error state for failed metadata', ()=>{
184
184
  mockUseObjectMetadata.mockReturnValueOnce({
185
185
  data: void 0,
186
- status: "error"
186
+ status: 'error'
187
187
  });
188
188
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
189
189
  ...defaultProps
190
190
  }));
191
- const errors = screen.getAllByText("Error");
191
+ const errors = screen.getAllByText('Error');
192
192
  expect(errors.length).toBeGreaterThan(0);
193
193
  });
194
- it("should show N/A when retention is not available", ()=>{
194
+ it('should show N/A when retention is not available', ()=>{
195
195
  mockUseObjectRetention.mockReturnValueOnce({
196
196
  data: void 0,
197
- status: "error"
197
+ status: 'error'
198
198
  });
199
199
  mockUseObjectLegalHold.mockReturnValueOnce({
200
200
  data: void 0,
201
- status: "error"
201
+ status: 'error'
202
202
  });
203
203
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
204
204
  ...defaultProps
205
205
  }));
206
- expect(screen.getByText("No Retention")).toBeInTheDocument();
207
- expect(screen.getAllByText("N/A").length).toBeGreaterThan(0);
206
+ expect(screen.getByText('No Retention')).toBeInTheDocument();
207
+ expect(screen.getAllByText('N/A').length).toBeGreaterThan(0);
208
208
  });
209
209
  });
210
- describe("Version ID Handling", ()=>{
211
- it("should prefer metadata version ID over prop", ()=>{
210
+ describe('Version ID Handling', ()=>{
211
+ it('should prefer metadata version ID over prop', ()=>{
212
212
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
213
213
  ...defaultProps,
214
214
  versionId: "prop-version-id"
215
215
  }));
216
- expect(screen.getByText("test-version-id")).toBeInTheDocument();
217
- expect(screen.queryByText("prop-version-id")).not.toBeInTheDocument();
216
+ expect(screen.getByText('test-version-id')).toBeInTheDocument();
217
+ expect(screen.queryByText('prop-version-id')).not.toBeInTheDocument();
218
218
  });
219
- it("should fallback to prop version ID when metadata is unavailable", ()=>{
219
+ it('should fallback to prop version ID when metadata is unavailable', ()=>{
220
220
  mockUseObjectMetadata.mockReturnValueOnce({
221
221
  data: {
222
222
  ...mockObjectMetadata,
223
223
  VersionId: void 0
224
224
  },
225
- status: "success"
225
+ status: 'success'
226
226
  });
227
227
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
228
228
  ...defaultProps,
229
229
  versionId: "fallback-version-id"
230
230
  }));
231
- expect(screen.getByText("fallback-version-id")).toBeInTheDocument();
231
+ expect(screen.getByText('fallback-version-id')).toBeInTheDocument();
232
232
  });
233
- it("should show N/A when no version ID is available", ()=>{
233
+ it('should show N/A when no version ID is available', ()=>{
234
234
  mockUseObjectMetadata.mockReturnValueOnce({
235
235
  data: {
236
236
  ...mockObjectMetadata,
237
237
  VersionId: void 0
238
238
  },
239
- status: "success"
239
+ status: 'success'
240
240
  });
241
241
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
242
242
  ...defaultProps
243
243
  }));
244
- expect(screen.getAllByText("N/A").length).toBeGreaterThan(0);
244
+ expect(screen.getAllByText('N/A').length).toBeGreaterThan(0);
245
245
  });
246
246
  });
247
- describe("ETag Handling Edge Cases", ()=>{
248
- it("should handle null ETag gracefully", ()=>{
247
+ describe('ETag Handling Edge Cases', ()=>{
248
+ it('should handle null ETag gracefully', ()=>{
249
249
  mockUseObjectMetadata.mockReturnValueOnce({
250
250
  data: {
251
251
  ...mockObjectMetadata,
252
252
  ETag: null
253
253
  },
254
- status: "success"
254
+ status: 'success'
255
255
  });
256
256
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
257
257
  ...defaultProps
258
258
  }));
259
- expect(screen.getAllByText("N/A").length).toBeGreaterThan(0);
259
+ expect(screen.getAllByText('N/A').length).toBeGreaterThan(0);
260
260
  });
261
- it("should handle undefined ETag gracefully", ()=>{
261
+ it('should handle undefined ETag gracefully', ()=>{
262
262
  mockUseObjectMetadata.mockReturnValueOnce({
263
263
  data: {
264
264
  ...mockObjectMetadata,
265
265
  ETag: void 0
266
266
  },
267
- status: "success"
267
+ status: 'success'
268
268
  });
269
269
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
270
270
  ...defaultProps
271
271
  }));
272
- expect(screen.getAllByText("N/A").length).toBeGreaterThan(0);
272
+ expect(screen.getAllByText('N/A').length).toBeGreaterThan(0);
273
273
  });
274
- it("should handle metadata error state gracefully", ()=>{
274
+ it('should handle metadata error state gracefully', ()=>{
275
275
  mockUseObjectMetadata.mockReturnValueOnce({
276
276
  data: void 0,
277
- status: "error"
277
+ status: 'error'
278
278
  });
279
279
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
280
280
  ...defaultProps
281
281
  }));
282
- expect(screen.getAllByText("Error").length).toBeGreaterThan(0);
282
+ expect(screen.getAllByText('Error').length).toBeGreaterThan(0);
283
283
  });
284
- it("should remove quotes from ETag", ()=>{
284
+ it('should remove quotes from ETag', ()=>{
285
285
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
286
286
  ...defaultProps
287
287
  }));
288
- expect(screen.getByText("abc123def456")).toBeInTheDocument();
288
+ expect(screen.getByText('abc123def456')).toBeInTheDocument();
289
289
  expect(screen.queryByText('"abc123def456"')).not.toBeInTheDocument();
290
290
  });
291
- it("should handle ETag without quotes", ()=>{
291
+ it('should handle ETag without quotes', ()=>{
292
292
  mockUseObjectMetadata.mockReturnValueOnce({
293
293
  data: {
294
294
  ...mockObjectMetadata,
295
- ETag: "unquoted-etag"
295
+ ETag: 'unquoted-etag'
296
296
  },
297
- status: "success"
297
+ status: 'success'
298
298
  });
299
299
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
300
300
  ...defaultProps
301
301
  }));
302
- expect(screen.getByText("unquoted-etag")).toBeInTheDocument();
302
+ expect(screen.getByText('unquoted-etag')).toBeInTheDocument();
303
303
  });
304
304
  });
305
- describe("Custom Fields", ()=>{
306
- describe("Information Section", ()=>{
307
- it("should render custom information fields", ()=>{
305
+ describe('Custom Fields', ()=>{
306
+ describe('Information Section', ()=>{
307
+ it('should render custom information fields', ()=>{
308
308
  const CustomField = ({ entityName })=>/*#__PURE__*/ jsxs("div", {
309
309
  children: [
310
310
  "Custom Field for ",
@@ -314,8 +314,8 @@ describe("ObjectSummary", ()=>{
314
314
  const customConfig = {
315
315
  extraObjectSummaryInformation: [
316
316
  {
317
- id: "custom-field",
318
- label: "Custom Field",
317
+ id: 'custom-field',
318
+ label: 'Custom Field',
319
319
  render: CustomField
320
320
  }
321
321
  ]
@@ -325,18 +325,18 @@ describe("ObjectSummary", ()=>{
325
325
  }), {
326
326
  customizationConfig: customConfig
327
327
  });
328
- expect(screen.getByText("Custom Field")).toBeInTheDocument();
328
+ expect(screen.getByText('Custom Field')).toBeInTheDocument();
329
329
  expect(screen.getByText(/custom field for test-object.txt/i)).toBeInTheDocument();
330
330
  });
331
- it("should replace default fields with same ID", ()=>{
331
+ it('should replace default fields with same ID', ()=>{
332
332
  const CustomLocationField = ()=>/*#__PURE__*/ jsx("div", {
333
333
  children: "Custom Location Value"
334
334
  });
335
335
  const customConfig = {
336
336
  extraObjectSummaryInformation: [
337
337
  {
338
- id: "location",
339
- label: "Custom Location",
338
+ id: 'location',
339
+ label: 'Custom Location',
340
340
  render: CustomLocationField
341
341
  }
342
342
  ]
@@ -346,11 +346,11 @@ describe("ObjectSummary", ()=>{
346
346
  }), {
347
347
  customizationConfig: customConfig
348
348
  });
349
- expect(screen.getByText("Custom Location")).toBeInTheDocument();
350
- expect(screen.getByText("Custom Location Value")).toBeInTheDocument();
351
- expect(screen.queryByText("default")).not.toBeInTheDocument();
349
+ expect(screen.getByText('Custom Location')).toBeInTheDocument();
350
+ expect(screen.getByText('Custom Location Value')).toBeInTheDocument();
351
+ expect(screen.queryByText('default')).not.toBeInTheDocument();
352
352
  });
353
- it("should add multiple custom fields", ()=>{
353
+ it('should add multiple custom fields', ()=>{
354
354
  const Field1 = ()=>/*#__PURE__*/ jsx("div", {
355
355
  children: "Field 1 Value"
356
356
  });
@@ -363,18 +363,18 @@ describe("ObjectSummary", ()=>{
363
363
  const customConfig = {
364
364
  extraObjectSummaryInformation: [
365
365
  {
366
- id: "field1",
367
- label: "Field 1",
366
+ id: 'field1',
367
+ label: 'Field 1',
368
368
  render: Field1
369
369
  },
370
370
  {
371
- id: "field2",
372
- label: "Field 2",
371
+ id: 'field2',
372
+ label: 'Field 2',
373
373
  render: Field2
374
374
  },
375
375
  {
376
- id: "field3",
377
- label: "Field 3",
376
+ id: 'field3',
377
+ label: 'Field 3',
378
378
  render: Field3
379
379
  }
380
380
  ]
@@ -384,14 +384,14 @@ describe("ObjectSummary", ()=>{
384
384
  }), {
385
385
  customizationConfig: customConfig
386
386
  });
387
- expect(screen.getByText("Field 1")).toBeInTheDocument();
388
- expect(screen.getByText("Field 2")).toBeInTheDocument();
389
- expect(screen.getByText("Field 3")).toBeInTheDocument();
390
- expect(screen.getByText("Field 1 Value")).toBeInTheDocument();
391
- expect(screen.getByText("Field 2 Value")).toBeInTheDocument();
392
- expect(screen.getByText("Field 3 Value")).toBeInTheDocument();
393
- });
394
- it("should pass entityName prop to custom field components", ()=>{
387
+ expect(screen.getByText('Field 1')).toBeInTheDocument();
388
+ expect(screen.getByText('Field 2')).toBeInTheDocument();
389
+ expect(screen.getByText('Field 3')).toBeInTheDocument();
390
+ expect(screen.getByText('Field 1 Value')).toBeInTheDocument();
391
+ expect(screen.getByText('Field 2 Value')).toBeInTheDocument();
392
+ expect(screen.getByText('Field 3 Value')).toBeInTheDocument();
393
+ });
394
+ it('should pass entityName prop to custom field components', ()=>{
395
395
  const CustomField = ({ entityName })=>/*#__PURE__*/ jsxs("div", {
396
396
  "data-testid": "custom-field",
397
397
  children: [
@@ -402,8 +402,8 @@ describe("ObjectSummary", ()=>{
402
402
  const customConfig = {
403
403
  extraObjectSummaryInformation: [
404
404
  {
405
- id: "test-field",
406
- label: "Test Field",
405
+ id: 'test-field',
406
+ label: 'Test Field',
407
407
  render: CustomField
408
408
  }
409
409
  ]
@@ -414,19 +414,19 @@ describe("ObjectSummary", ()=>{
414
414
  }), {
415
415
  customizationConfig: customConfig
416
416
  });
417
- expect(screen.getByTestId("custom-field")).toHaveTextContent("EntityName: my-special-file.txt");
417
+ expect(screen.getByTestId('custom-field')).toHaveTextContent('EntityName: my-special-file.txt');
418
418
  });
419
419
  });
420
- describe("Data Protection Section", ()=>{
421
- it("should render custom data protection fields", ()=>{
420
+ describe('Data Protection Section', ()=>{
421
+ it('should render custom data protection fields', ()=>{
422
422
  const CustomProtectionField = ()=>/*#__PURE__*/ jsx("div", {
423
423
  children: "Custom Protection Info"
424
424
  });
425
425
  const customConfig = {
426
426
  extraObjectSummaryDataProtection: [
427
427
  {
428
- id: "custom-protection",
429
- label: "Custom Protection",
428
+ id: 'custom-protection',
429
+ label: 'Custom Protection',
430
430
  render: CustomProtectionField
431
431
  }
432
432
  ]
@@ -436,18 +436,18 @@ describe("ObjectSummary", ()=>{
436
436
  }), {
437
437
  customizationConfig: customConfig
438
438
  });
439
- expect(screen.getByText("Custom Protection")).toBeInTheDocument();
440
- expect(screen.getByText("Custom Protection Info")).toBeInTheDocument();
439
+ expect(screen.getByText('Custom Protection')).toBeInTheDocument();
440
+ expect(screen.getByText('Custom Protection Info')).toBeInTheDocument();
441
441
  });
442
- it("should replace default data protection fields", ()=>{
442
+ it('should replace default data protection fields', ()=>{
443
443
  const CustomLockField = ()=>/*#__PURE__*/ jsx("div", {
444
444
  children: "Custom Lock Status"
445
445
  });
446
446
  const customConfig = {
447
447
  extraObjectSummaryDataProtection: [
448
448
  {
449
- id: "lock",
450
- label: "Custom Lock",
449
+ id: 'lock',
450
+ label: 'Custom Lock',
451
451
  render: CustomLockField
452
452
  }
453
453
  ]
@@ -457,20 +457,20 @@ describe("ObjectSummary", ()=>{
457
457
  }), {
458
458
  customizationConfig: customConfig
459
459
  });
460
- expect(screen.getByText("Custom Lock")).toBeInTheDocument();
461
- expect(screen.getByText("Custom Lock Status")).toBeInTheDocument();
460
+ expect(screen.getByText('Custom Lock')).toBeInTheDocument();
461
+ expect(screen.getByText('Custom Lock Status')).toBeInTheDocument();
462
462
  expect(screen.queryByText(/GOVERNANCE/)).not.toBeInTheDocument();
463
463
  });
464
464
  });
465
- describe("Optional Labels", ()=>{
466
- it("should handle fields without labels", ()=>{
465
+ describe('Optional Labels', ()=>{
466
+ it('should handle fields without labels', ()=>{
467
467
  const FieldWithoutLabel = ()=>/*#__PURE__*/ jsx("div", {
468
468
  children: "Content Only"
469
469
  });
470
470
  const customConfig = {
471
471
  extraObjectSummaryInformation: [
472
472
  {
473
- id: "no-label-field",
473
+ id: 'no-label-field',
474
474
  render: FieldWithoutLabel
475
475
  }
476
476
  ]
@@ -480,21 +480,21 @@ describe("ObjectSummary", ()=>{
480
480
  }), {
481
481
  customizationConfig: customConfig
482
482
  });
483
- expect(screen.getByText("Content Only")).toBeInTheDocument();
483
+ expect(screen.getByText('Content Only')).toBeInTheDocument();
484
484
  });
485
485
  });
486
486
  });
487
- describe("Legal Hold Toggle", ()=>{
488
- it("should call mutation when toggle is clicked", async ()=>{
487
+ describe('Legal Hold Toggle', ()=>{
488
+ it('should call mutation when toggle is clicked', async ()=>{
489
489
  const user = user_event.setup();
490
490
  const mockMutate = jest.fn();
491
491
  mockUseObjectRetention.mockReturnValueOnce({
492
492
  data: mockRetentionData,
493
- status: "success"
493
+ status: 'success'
494
494
  });
495
495
  mockUseObjectLegalHold.mockReturnValueOnce({
496
496
  data: mockLegalHoldData,
497
- status: "success"
497
+ status: 'success'
498
498
  });
499
499
  mockUseSetObjectLegalHold.mockReturnValueOnce({
500
500
  mutate: mockMutate,
@@ -503,22 +503,22 @@ describe("ObjectSummary", ()=>{
503
503
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
504
504
  ...defaultProps
505
505
  }));
506
- const toggle = screen.getByRole("checkbox");
506
+ const toggle = screen.getByRole('checkbox');
507
507
  await user.click(toggle);
508
508
  await waitFor(()=>{
509
509
  expect(mockMutate).toHaveBeenCalled();
510
510
  });
511
511
  });
512
- it("should call mutation with correct parameters", async ()=>{
512
+ it('should call mutation with correct parameters', async ()=>{
513
513
  const user = user_event.setup();
514
514
  const mockMutate = jest.fn();
515
515
  mockUseObjectRetention.mockReturnValueOnce({
516
516
  data: mockRetentionData,
517
- status: "success"
517
+ status: 'success'
518
518
  });
519
519
  mockUseObjectLegalHold.mockReturnValueOnce({
520
520
  data: mockLegalHoldData,
521
- status: "success"
521
+ status: 'success'
522
522
  });
523
523
  mockUseSetObjectLegalHold.mockReturnValueOnce({
524
524
  mutate: mockMutate,
@@ -527,19 +527,19 @@ describe("ObjectSummary", ()=>{
527
527
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
528
528
  ...defaultProps
529
529
  }));
530
- const toggle = screen.getByRole("checkbox");
530
+ const toggle = screen.getByRole('checkbox');
531
531
  await user.click(toggle);
532
532
  await waitFor(()=>{
533
533
  expect(mockMutate).toHaveBeenCalledWith(expect.objectContaining({
534
- Bucket: "test-bucket",
535
- Key: "test-object.txt",
534
+ Bucket: 'test-bucket',
535
+ Key: 'test-object.txt',
536
536
  LegalHold: {
537
- Status: "ON"
537
+ Status: 'ON'
538
538
  }
539
539
  }), expect.any(Object));
540
540
  });
541
541
  });
542
- it("should show success toast with correct message when enabling legal hold", async ()=>{
542
+ it('should show success toast with correct message when enabling legal hold', async ()=>{
543
543
  const user = user_event.setup();
544
544
  const mockShowToast = jest.fn();
545
545
  const mockMutate = jest.fn((_params, callbacks)=>{
@@ -550,11 +550,11 @@ describe("ObjectSummary", ()=>{
550
550
  });
551
551
  mockUseObjectRetention.mockReturnValueOnce({
552
552
  data: mockRetentionData,
553
- status: "success"
553
+ status: 'success'
554
554
  });
555
555
  mockUseObjectLegalHold.mockReturnValueOnce({
556
556
  data: mockLegalHoldData,
557
- status: "success"
557
+ status: 'success'
558
558
  });
559
559
  mockUseSetObjectLegalHold.mockReturnValueOnce({
560
560
  mutate: mockMutate,
@@ -563,20 +563,20 @@ describe("ObjectSummary", ()=>{
563
563
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
564
564
  ...defaultProps
565
565
  }));
566
- const toggle = screen.getByRole("checkbox");
566
+ const toggle = screen.getByRole('checkbox');
567
567
  await user.click(toggle);
568
568
  await waitFor(()=>{
569
569
  expect(mockShowToast).toHaveBeenCalledWith({
570
570
  open: true,
571
- message: "Legal hold active",
572
- status: "success"
571
+ message: 'Legal hold active',
572
+ status: 'success'
573
573
  });
574
574
  });
575
575
  });
576
- it("should show error toast when mutation fails with Error instance", async ()=>{
576
+ it('should show error toast when mutation fails with Error instance', async ()=>{
577
577
  const user = user_event.setup();
578
578
  const mockShowToast = jest.fn();
579
- const testError = new Error("Network error");
579
+ const testError = new Error('Network error');
580
580
  const mockMutate = jest.fn((_params, callbacks)=>{
581
581
  callbacks.onError(testError);
582
582
  });
@@ -585,11 +585,11 @@ describe("ObjectSummary", ()=>{
585
585
  });
586
586
  mockUseObjectRetention.mockReturnValueOnce({
587
587
  data: mockRetentionData,
588
- status: "success"
588
+ status: 'success'
589
589
  });
590
590
  mockUseObjectLegalHold.mockReturnValueOnce({
591
591
  data: mockLegalHoldData,
592
- status: "success"
592
+ status: 'success'
593
593
  });
594
594
  mockUseSetObjectLegalHold.mockReturnValueOnce({
595
595
  mutate: mockMutate,
@@ -598,22 +598,22 @@ describe("ObjectSummary", ()=>{
598
598
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
599
599
  ...defaultProps
600
600
  }));
601
- const toggle = screen.getByRole("checkbox");
601
+ const toggle = screen.getByRole('checkbox');
602
602
  await user.click(toggle);
603
603
  await waitFor(()=>{
604
604
  expect(mockShowToast).toHaveBeenCalledWith({
605
605
  open: true,
606
- message: "Network error",
607
- status: "error"
606
+ message: 'Network error',
607
+ status: 'error'
608
608
  });
609
609
  });
610
610
  });
611
- it("should show generic error message when mutation fails with non-Error object", async ()=>{
611
+ it('should show generic error message when mutation fails with non-Error object', async ()=>{
612
612
  const user = user_event.setup();
613
613
  const mockShowToast = jest.fn();
614
614
  const mockMutate = jest.fn((_params, callbacks)=>{
615
615
  callbacks.onError({
616
- message: "Custom error"
616
+ message: 'Custom error'
617
617
  });
618
618
  });
619
619
  mockUseToast.mockReturnValue({
@@ -621,11 +621,11 @@ describe("ObjectSummary", ()=>{
621
621
  });
622
622
  mockUseObjectRetention.mockReturnValueOnce({
623
623
  data: mockRetentionData,
624
- status: "success"
624
+ status: 'success'
625
625
  });
626
626
  mockUseObjectLegalHold.mockReturnValueOnce({
627
627
  data: mockLegalHoldData,
628
- status: "success"
628
+ status: 'success'
629
629
  });
630
630
  mockUseSetObjectLegalHold.mockReturnValueOnce({
631
631
  mutate: mockMutate,
@@ -634,24 +634,24 @@ describe("ObjectSummary", ()=>{
634
634
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
635
635
  ...defaultProps
636
636
  }));
637
- const toggle = screen.getByRole("checkbox");
637
+ const toggle = screen.getByRole('checkbox');
638
638
  await user.click(toggle);
639
639
  await waitFor(()=>{
640
640
  expect(mockShowToast).toHaveBeenCalledWith({
641
641
  open: true,
642
- message: "Failed to update legal hold",
643
- status: "error"
642
+ message: 'Failed to update legal hold',
643
+ status: 'error'
644
644
  });
645
645
  });
646
646
  });
647
- it("should disable toggle while updating", ()=>{
647
+ it('should disable toggle while updating', ()=>{
648
648
  mockUseObjectRetention.mockReturnValueOnce({
649
649
  data: mockRetentionData,
650
- status: "success"
650
+ status: 'success'
651
651
  });
652
652
  mockUseObjectLegalHold.mockReturnValueOnce({
653
653
  data: mockLegalHoldData,
654
- status: "success"
654
+ status: 'success'
655
655
  });
656
656
  mockUseSetObjectLegalHold.mockReturnValueOnce({
657
657
  mutate: jest.fn(),
@@ -660,21 +660,21 @@ describe("ObjectSummary", ()=>{
660
660
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
661
661
  ...defaultProps
662
662
  }));
663
- const toggle = screen.getByRole("checkbox");
664
- expect(toggle).toHaveAttribute("aria-disabled", "true");
663
+ const toggle = screen.getByRole('checkbox');
664
+ expect(toggle).toHaveAttribute('aria-disabled', 'true');
665
665
  });
666
- it("should show checked toggle when legal hold is enabled", ()=>{
666
+ it('should show checked toggle when legal hold is enabled', ()=>{
667
667
  mockUseObjectRetention.mockReturnValueOnce({
668
668
  data: mockRetentionData,
669
- status: "success"
669
+ status: 'success'
670
670
  });
671
671
  mockUseObjectLegalHold.mockReturnValueOnce({
672
672
  data: {
673
673
  LegalHold: {
674
- Status: "ON"
674
+ Status: 'ON'
675
675
  }
676
676
  },
677
- status: "success"
677
+ status: 'success'
678
678
  });
679
679
  mockUseSetObjectLegalHold.mockReturnValueOnce({
680
680
  mutate: jest.fn(),
@@ -683,22 +683,22 @@ describe("ObjectSummary", ()=>{
683
683
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
684
684
  ...defaultProps
685
685
  }));
686
- const toggle = screen.getByRole("checkbox");
686
+ const toggle = screen.getByRole('checkbox');
687
687
  expect(toggle).toBeChecked();
688
- expect(toggle).toHaveAttribute("aria-checked", "true");
688
+ expect(toggle).toHaveAttribute('aria-checked', 'true');
689
689
  });
690
- it("should show unchecked toggle when legal hold is disabled", ()=>{
690
+ it('should show unchecked toggle when legal hold is disabled', ()=>{
691
691
  mockUseObjectRetention.mockReturnValueOnce({
692
692
  data: mockRetentionData,
693
- status: "success"
693
+ status: 'success'
694
694
  });
695
695
  mockUseObjectLegalHold.mockReturnValueOnce({
696
696
  data: {
697
697
  LegalHold: {
698
- Status: "OFF"
698
+ Status: 'OFF'
699
699
  }
700
700
  },
701
- status: "success"
701
+ status: 'success'
702
702
  });
703
703
  mockUseSetObjectLegalHold.mockReturnValueOnce({
704
704
  mutate: jest.fn(),
@@ -707,67 +707,67 @@ describe("ObjectSummary", ()=>{
707
707
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
708
708
  ...defaultProps
709
709
  }));
710
- const toggle = screen.getByRole("checkbox");
710
+ const toggle = screen.getByRole('checkbox');
711
711
  expect(toggle).not.toBeChecked();
712
- expect(toggle).toHaveAttribute("aria-checked", "false");
712
+ expect(toggle).toHaveAttribute('aria-checked', 'false');
713
713
  });
714
714
  });
715
- describe("Copy Buttons", ()=>{
716
- it("should render copy buttons for version ID and ETag", ()=>{
715
+ describe('Copy Buttons', ()=>{
716
+ it('should render copy buttons for version ID and ETag', ()=>{
717
717
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
718
718
  ...defaultProps
719
719
  }));
720
- const copyButtons = screen.getAllByRole("button", {
720
+ const copyButtons = screen.getAllByRole('button', {
721
721
  name: /copy/i
722
722
  });
723
723
  expect(copyButtons.length).toBeGreaterThanOrEqual(2);
724
724
  });
725
- it("should display version ID value correctly", ()=>{
725
+ it('should display version ID value correctly', ()=>{
726
726
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
727
727
  ...defaultProps
728
728
  }));
729
- expect(screen.getByText("test-version-id")).toBeInTheDocument();
730
- const copyButtons = screen.getAllByRole("button", {
729
+ expect(screen.getByText('test-version-id')).toBeInTheDocument();
730
+ const copyButtons = screen.getAllByRole('button', {
731
731
  name: /copy/i
732
732
  });
733
733
  expect(copyButtons.length).toBeGreaterThan(0);
734
734
  });
735
- it("should display ETag value correctly", ()=>{
735
+ it('should display ETag value correctly', ()=>{
736
736
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
737
737
  ...defaultProps
738
738
  }));
739
- expect(screen.getByText("abc123def456")).toBeInTheDocument();
740
- const copyButtons = screen.getAllByRole("button", {
739
+ expect(screen.getByText('abc123def456')).toBeInTheDocument();
740
+ const copyButtons = screen.getAllByRole('button', {
741
741
  name: /copy/i
742
742
  });
743
743
  expect(copyButtons.length).toBeGreaterThan(0);
744
744
  });
745
745
  });
746
- describe("Field Ordering", ()=>{
747
- it("should maintain default field order", ()=>{
746
+ describe('Field Ordering', ()=>{
747
+ it('should maintain default field order', ()=>{
748
748
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
749
749
  ...defaultProps
750
750
  }));
751
- expect(screen.getByText("Information")).toBeInTheDocument();
752
- expect(screen.getByText("Name")).toBeInTheDocument();
753
- expect(screen.getByText("Version ID")).toBeInTheDocument();
754
- expect(screen.getByText("Size")).toBeInTheDocument();
755
- expect(screen.getByText("Modified On")).toBeInTheDocument();
756
- expect(screen.getByText("ETag")).toBeInTheDocument();
757
- expect(screen.getByText("Location")).toBeInTheDocument();
758
- expect(screen.getByText("Data protection")).toBeInTheDocument();
759
- expect(screen.getByText("Lock")).toBeInTheDocument();
760
- expect(screen.getByText("Legal Hold")).toBeInTheDocument();
751
+ expect(screen.getByText('Information')).toBeInTheDocument();
752
+ expect(screen.getByText('Name')).toBeInTheDocument();
753
+ expect(screen.getByText('Version ID')).toBeInTheDocument();
754
+ expect(screen.getByText('Size')).toBeInTheDocument();
755
+ expect(screen.getByText('Modified On')).toBeInTheDocument();
756
+ expect(screen.getByText('ETag')).toBeInTheDocument();
757
+ expect(screen.getByText('Location')).toBeInTheDocument();
758
+ expect(screen.getByText('Data protection')).toBeInTheDocument();
759
+ expect(screen.getByText('Lock')).toBeInTheDocument();
760
+ expect(screen.getByText('Legal Hold')).toBeInTheDocument();
761
761
  });
762
- it("should append custom fields after default fields", ()=>{
762
+ it('should append custom fields after default fields', ()=>{
763
763
  const CustomField = ()=>/*#__PURE__*/ jsx("div", {
764
764
  children: "Custom Field Content"
765
765
  });
766
766
  const customConfig = {
767
767
  extraObjectSummaryInformation: [
768
768
  {
769
- id: "custom-field",
770
- label: "Custom Field",
769
+ id: 'custom-field',
770
+ label: 'Custom Field',
771
771
  render: CustomField
772
772
  }
773
773
  ]
@@ -777,37 +777,37 @@ describe("ObjectSummary", ()=>{
777
777
  }), {
778
778
  customizationConfig: customConfig
779
779
  });
780
- const allText = document.body.textContent || "";
781
- const locationIndex = allText.indexOf("Location");
782
- const customFieldIndex = allText.indexOf("Custom Field");
780
+ const allText = document.body.textContent || '';
781
+ const locationIndex = allText.indexOf('Location');
782
+ const customFieldIndex = allText.indexOf('Custom Field');
783
783
  expect(locationIndex).toBeLessThan(customFieldIndex);
784
784
  });
785
785
  });
786
- describe("Performance", ()=>{
787
- it("should memoize information fields", ()=>{
786
+ describe('Performance', ()=>{
787
+ it('should memoize information fields', ()=>{
788
788
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
789
789
  ...defaultProps
790
790
  }));
791
- const firstRender = screen.getByText("test-object.txt");
791
+ const firstRender = screen.getByText('test-object.txt');
792
792
  expect(firstRender).toBeInTheDocument();
793
793
  cleanup();
794
794
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
795
795
  ...defaultProps
796
796
  }));
797
- const secondRender = screen.getByText("test-object.txt");
797
+ const secondRender = screen.getByText('test-object.txt');
798
798
  expect(secondRender).toBeInTheDocument();
799
799
  });
800
- it("should not recalculate fields when unrelated props change", ()=>{
800
+ it('should not recalculate fields when unrelated props change', ()=>{
801
801
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
802
802
  ...defaultProps
803
803
  }));
804
- expect(screen.getByText("test-object.txt")).toBeInTheDocument();
804
+ expect(screen.getByText('test-object.txt')).toBeInTheDocument();
805
805
  cleanup();
806
806
  renderWithProviders(/*#__PURE__*/ jsx(ObjectSummary, {
807
807
  ...defaultProps,
808
808
  versionId: "new-version"
809
809
  }));
810
- expect(screen.getByText("test-object.txt")).toBeInTheDocument();
810
+ expect(screen.getByText('test-object.txt')).toBeInTheDocument();
811
811
  });
812
812
  });
813
813
  });