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