@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.
- package/dist/components/DataBrowserUI.d.ts +6 -14
- package/dist/components/DataBrowserUI.js +79 -55
- package/dist/components/Editor.d.ts +1 -1
- package/dist/components/Editor.js +3 -3
- package/dist/components/__tests__/BucketCreate.test.js +102 -102
- package/dist/components/__tests__/BucketDetails.test.js +122 -123
- package/dist/components/__tests__/BucketLifecycleFormPage.test.js +177 -177
- package/dist/components/__tests__/BucketLifecycleList.test.js +85 -85
- package/dist/components/__tests__/BucketList.test.js +175 -176
- package/dist/components/__tests__/BucketNotificationCreatePage.test.js +84 -84
- package/dist/components/__tests__/BucketOverview.test.js +257 -201
- package/dist/components/__tests__/BucketPolicyPage.test.js +62 -62
- package/dist/components/__tests__/BucketReplicationFormPage.test.js +542 -542
- 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 +62 -62
- package/dist/components/__tests__/DeleteBucketConfigRuleButton.test.js +47 -47
- package/dist/components/__tests__/DeleteObjectButton.test.js +63 -63
- package/dist/components/__tests__/EmptyBucketButton.test.js +56 -56
- package/dist/components/__tests__/MetadataSearch.test.js +65 -65
- package/dist/components/__tests__/ObjectList.test.js +252 -251
- package/dist/components/__tests__/UploadButton.test.js +45 -45
- package/dist/components/buckets/BucketCreate.d.ts +2 -2
- package/dist/components/buckets/BucketCreate.js +41 -41
- package/dist/components/buckets/BucketDetails.d.ts +2 -2
- package/dist/components/buckets/BucketDetails.js +48 -36
- package/dist/components/buckets/BucketLifecycleFormPage.js +161 -160
- package/dist/components/buckets/BucketLifecycleList.d.ts +2 -2
- package/dist/components/buckets/BucketLifecycleList.js +46 -46
- package/dist/components/buckets/BucketList.d.ts +2 -2
- package/dist/components/buckets/BucketList.js +28 -27
- package/dist/components/buckets/BucketLocation.js +3 -3
- package/dist/components/buckets/BucketOverview.d.ts +1 -1
- package/dist/components/buckets/BucketOverview.js +64 -65
- package/dist/components/buckets/BucketPage.js +19 -11
- package/dist/components/buckets/BucketPolicyButton.js +2 -2
- package/dist/components/buckets/BucketPolicyPage.js +27 -25
- package/dist/components/buckets/BucketReplicationFormPage.js +133 -132
- package/dist/components/buckets/BucketReplicationList.d.ts +2 -2
- package/dist/components/buckets/BucketReplicationList.js +41 -41
- package/dist/components/buckets/BucketVersioning.js +11 -11
- package/dist/components/buckets/DeleteBucketButton.js +5 -5
- package/dist/components/buckets/DeleteBucketConfigRuleButton.d.ts +2 -2
- package/dist/components/buckets/DeleteBucketConfigRuleButton.js +1 -1
- package/dist/components/buckets/EmptyBucketButton.js +19 -19
- package/dist/components/buckets/EmptyBucketSummary.d.ts +1 -1
- package/dist/components/buckets/EmptyBucketSummary.js +1 -1
- package/dist/components/buckets/EmptyBucketSummaryList.js +22 -22
- package/dist/components/buckets/__tests__/BucketVersioning.test.js +45 -45
- package/dist/components/buckets/notifications/BucketNotificationCreatePage.js +34 -33
- package/dist/components/buckets/notifications/EventsSection.js +144 -28
- 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 +24 -22
- package/dist/components/index.js +5 -3
- package/dist/components/layouts/ArrowNavigation.d.ts +1 -2
- package/dist/components/layouts/ArrowNavigation.js +3 -3
- package/dist/components/layouts/BrowserPageLayout.d.ts +2 -3
- package/dist/components/layouts/BrowserPageLayout.js +1 -1
- package/dist/components/objects/CreateFolderButton.d.ts +2 -2
- package/dist/components/objects/CreateFolderButton.js +9 -9
- package/dist/components/objects/DeleteObjectButton.d.ts +1 -1
- package/dist/components/objects/DeleteObjectButton.js +20 -20
- package/dist/components/objects/ObjectDetails/ObjectMetadata.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectMetadata.js +56 -56
- package/dist/components/objects/ObjectDetails/ObjectSummary.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectSummary.js +39 -39
- package/dist/components/objects/ObjectDetails/ObjectTags.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/ObjectTags.js +25 -25
- package/dist/components/objects/ObjectDetails/__tests__/ObjectDetails.test.js +119 -119
- package/dist/components/objects/ObjectDetails/__tests__/ObjectSummary.test.js +211 -211
- package/dist/components/objects/ObjectDetails/index.d.ts +1 -1
- package/dist/components/objects/ObjectDetails/index.js +30 -30
- package/dist/components/objects/ObjectList.d.ts +5 -5
- package/dist/components/objects/ObjectList.js +113 -112
- package/dist/components/objects/ObjectLock/EditRetentionButton.js +3 -3
- package/dist/components/objects/ObjectLock/ObjectLockRetentionSettings.js +14 -14
- package/dist/components/objects/ObjectLock/ObjectLockSettings.d.ts +1 -1
- package/dist/components/objects/ObjectLock/ObjectLockSettings.js +29 -28
- 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 +50 -50
- package/dist/components/objects/ObjectLock/__tests__/ObjectLockSettings.test.js +77 -77
- package/dist/components/objects/ObjectPage.js +5 -4
- package/dist/components/objects/UploadButton.d.ts +3 -3
- package/dist/components/objects/UploadButton.js +5 -5
- 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 +22 -0
- package/dist/components/search/MetadataSearch.js +26 -25
- package/dist/components/search/SearchHints.js +1 -1
- package/dist/components/ui/ArrayFieldActions.js +4 -4
- package/dist/components/ui/ConfirmDeleteRuleModal.d.ts +1 -1
- package/dist/components/ui/ConfirmDeleteRuleModal.js +1 -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 +1 -1
- package/dist/components/ui/Search.elements.js +7 -7
- package/dist/components/ui/Table.elements.js +5 -5
- package/dist/config/factory.d.ts +23 -10
- package/dist/config/factory.js +22 -7
- package/dist/config/types.d.ts +20 -3
- package/dist/contexts/DataBrowserUICustomizationContext.d.ts +2 -2
- package/dist/hooks/__tests__/useISVBucketDetection.test.js +42 -42
- package/dist/hooks/__tests__/useIsBucketEmpty.test.js +25 -25
- package/dist/hooks/bucketConfiguration.d.ts +1 -1
- package/dist/hooks/bucketConfiguration.js +48 -48
- package/dist/hooks/bucketOperations.d.ts +1 -1
- package/dist/hooks/bucketOperations.js +6 -6
- package/dist/hooks/factories/__tests__/useCreateS3FunctionMutationHook.test.js +78 -78
- package/dist/hooks/factories/__tests__/useCreateS3InfiniteQueryHook.test.js +78 -78
- package/dist/hooks/factories/__tests__/useCreateS3LoginHook.test.js +42 -42
- package/dist/hooks/factories/__tests__/useCreateS3MutationHook.test.js +61 -61
- package/dist/hooks/factories/__tests__/useCreateS3QueryHook.test.js +63 -63
- package/dist/hooks/factories/index.d.ts +4 -4
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3InfiniteQueryHook.js +15 -12
- package/dist/hooks/factories/useCreateS3LoginHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3MutationHook.d.ts +3 -3
- package/dist/hooks/factories/useCreateS3MutationHook.js +6 -1
- package/dist/hooks/factories/useCreateS3QueryHook.d.ts +2 -2
- package/dist/hooks/factories/useCreateS3QueryHook.js +8 -5
- package/dist/hooks/index.d.ts +16 -13
- package/dist/hooks/index.js +4 -1
- 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 +49 -49
- package/dist/hooks/presignedOperations.d.ts +2 -2
- package/dist/hooks/presignedOperations.js +3 -3
- package/dist/hooks/useBatchObjectLegalHold.js +7 -4
- 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 +10 -10
- package/dist/hooks/useFeatures.d.ts +7 -0
- package/dist/hooks/useFeatures.js +8 -0
- package/dist/hooks/useISVBucketDetection.js +5 -5
- package/dist/hooks/useIsBucketEmpty.js +4 -4
- package/dist/hooks/useLoginMutation.d.ts +1 -1
- package/dist/hooks/useLoginMutation.js +1 -1
- 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/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 +31 -16
- 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 +72 -49
- package/dist/test/msw/index.d.ts +2 -2
- 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 +19 -19
- package/dist/test/testUtils.d.ts +9 -15
- package/dist/test/testUtils.js +73 -91
- package/dist/test/utils/errorHandling.test.js +119 -119
- package/dist/types/index.d.ts +6 -31
- package/dist/utils/__tests__/s3ConfigIdentifier.test.d.ts +1 -0
- package/dist/utils/__tests__/s3ConfigIdentifier.test.js +429 -0
- package/dist/utils/constants.js +8 -8
- package/dist/utils/deletion/index.d.ts +2 -2
- 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 +2 -0
- package/dist/utils/proxyMiddleware.d.ts +1 -1
- package/dist/utils/proxyMiddleware.js +6 -11
- package/dist/utils/s3Client.d.ts +2 -2
- package/dist/utils/s3Client.js +1 -1
- package/dist/utils/s3ConfigIdentifier.d.ts +68 -0
- package/dist/utils/s3ConfigIdentifier.js +55 -0
- package/dist/utils/s3RuleUtils.d.ts +5 -5
- package/dist/utils/s3RuleUtils.js +17 -17
- package/package.json +2 -2
- package/dist/utils/useFeatures.d.ts +0 -1
- package/dist/utils/useFeatures.js +0 -7
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { fireEvent, render, screen, waitFor } from "@testing-library/react";
|
|
3
3
|
import user_event from "@testing-library/user-event";
|
|
4
|
-
import { MemoryRouter } from "react-router
|
|
5
|
-
import {
|
|
4
|
+
import { MemoryRouter } from "react-router";
|
|
5
|
+
import { createTestWrapper } from "../../test/testUtils.js";
|
|
6
6
|
import { MetadataSearch } from "../search/MetadataSearch.js";
|
|
7
7
|
const renderMetadataSearch = (props = {}, initialEntries = [
|
|
8
|
-
|
|
8
|
+
'/bucket/test-bucket'
|
|
9
9
|
])=>{
|
|
10
|
-
const
|
|
11
|
-
return render(/*#__PURE__*/ jsx(
|
|
10
|
+
const TestWrapper = createTestWrapper();
|
|
11
|
+
return render(/*#__PURE__*/ jsx(TestWrapper, {
|
|
12
12
|
children: /*#__PURE__*/ jsx(MemoryRouter, {
|
|
13
13
|
initialEntries: initialEntries,
|
|
14
14
|
children: /*#__PURE__*/ jsx(MetadataSearch, {
|
|
@@ -18,50 +18,50 @@ const renderMetadataSearch = (props = {}, initialEntries = [
|
|
|
18
18
|
})
|
|
19
19
|
}));
|
|
20
20
|
};
|
|
21
|
-
describe(
|
|
21
|
+
describe('MetadataSearch', ()=>{
|
|
22
22
|
const getInput = ()=>screen.getByPlaceholderText(/Metadata Search/i);
|
|
23
|
-
it(
|
|
23
|
+
it('renders search input with placeholder', ()=>{
|
|
24
24
|
renderMetadataSearch();
|
|
25
25
|
expect(getInput()).toBeInTheDocument();
|
|
26
26
|
expect(screen.getByPlaceholderText(/Metadata Search/i)).toBeInTheDocument();
|
|
27
27
|
});
|
|
28
|
-
it(
|
|
28
|
+
it('renders search button', ()=>{
|
|
29
29
|
renderMetadataSearch();
|
|
30
|
-
expect(screen.getByRole(
|
|
30
|
+
expect(screen.getByRole('button', {
|
|
31
31
|
name: /execute metadata search/i
|
|
32
32
|
})).toBeInTheDocument();
|
|
33
33
|
});
|
|
34
|
-
it(
|
|
34
|
+
it('search button is disabled when input is empty', ()=>{
|
|
35
35
|
renderMetadataSearch();
|
|
36
|
-
const searchButton = screen.getByRole(
|
|
36
|
+
const searchButton = screen.getByRole('button', {
|
|
37
37
|
name: /execute metadata search/i
|
|
38
38
|
});
|
|
39
39
|
expect(searchButton).toBeDisabled();
|
|
40
40
|
});
|
|
41
|
-
it(
|
|
41
|
+
it('search button is enabled when input has text', async ()=>{
|
|
42
42
|
renderMetadataSearch();
|
|
43
43
|
const input = getInput();
|
|
44
|
-
const searchButton = screen.getByRole(
|
|
44
|
+
const searchButton = screen.getByRole('button', {
|
|
45
45
|
name: /execute metadata search/i
|
|
46
46
|
});
|
|
47
|
-
await user_event.type(input,
|
|
47
|
+
await user_event.type(input, 'test query');
|
|
48
48
|
expect(searchButton).toBeEnabled();
|
|
49
49
|
});
|
|
50
|
-
it(
|
|
50
|
+
it('shows search icon by default', ()=>{
|
|
51
51
|
renderMetadataSearch();
|
|
52
52
|
const input = getInput();
|
|
53
53
|
const searchIcon = input.parentElement?.querySelector('[aria-label*="Search"]');
|
|
54
54
|
expect(searchIcon).toBeInTheDocument();
|
|
55
55
|
});
|
|
56
|
-
it(
|
|
56
|
+
it('shows check icon when metadata search is active', ()=>{
|
|
57
57
|
renderMetadataSearch({}, [
|
|
58
|
-
|
|
58
|
+
'/bucket/test-bucket?metadatasearch=test'
|
|
59
59
|
]);
|
|
60
60
|
const input = getInput();
|
|
61
61
|
const checkIcon = input.parentElement?.querySelector('[aria-label*="Check"]');
|
|
62
62
|
expect(checkIcon).toBeInTheDocument();
|
|
63
63
|
});
|
|
64
|
-
it(
|
|
64
|
+
it('shows error icon when error prop is true', ()=>{
|
|
65
65
|
renderMetadataSearch({
|
|
66
66
|
isError: true
|
|
67
67
|
});
|
|
@@ -69,133 +69,133 @@ describe("MetadataSearch", ()=>{
|
|
|
69
69
|
const errorIcon = input.parentElement?.querySelector('[aria-label*="Close"]');
|
|
70
70
|
expect(errorIcon).toBeInTheDocument();
|
|
71
71
|
});
|
|
72
|
-
it(
|
|
72
|
+
it('populates input with existing search query from URL', ()=>{
|
|
73
73
|
renderMetadataSearch({}, [
|
|
74
|
-
|
|
74
|
+
'/bucket/test-bucket?metadatasearch=existing+query'
|
|
75
75
|
]);
|
|
76
76
|
const input = getInput();
|
|
77
|
-
expect(input).toHaveValue(
|
|
77
|
+
expect(input).toHaveValue('existing query');
|
|
78
78
|
});
|
|
79
|
-
it(
|
|
79
|
+
it('shows reset button when input has text', async ()=>{
|
|
80
80
|
renderMetadataSearch();
|
|
81
81
|
const input = getInput();
|
|
82
|
-
await user_event.type(input,
|
|
83
|
-
expect(screen.getByRole(
|
|
82
|
+
await user_event.type(input, 'test query');
|
|
83
|
+
expect(screen.getByRole('button', {
|
|
84
84
|
name: /clear search input/i
|
|
85
85
|
})).toBeInTheDocument();
|
|
86
86
|
});
|
|
87
|
-
it(
|
|
87
|
+
it('clears input when reset button is clicked', async ()=>{
|
|
88
88
|
renderMetadataSearch();
|
|
89
89
|
const input = getInput();
|
|
90
|
-
await user_event.type(input,
|
|
91
|
-
const resetButton = screen.getByRole(
|
|
90
|
+
await user_event.type(input, 'test query');
|
|
91
|
+
const resetButton = screen.getByRole('button', {
|
|
92
92
|
name: /clear search input/i
|
|
93
93
|
});
|
|
94
94
|
fireEvent.click(resetButton);
|
|
95
|
-
expect(input).toHaveValue(
|
|
95
|
+
expect(input).toHaveValue('');
|
|
96
96
|
});
|
|
97
|
-
it(
|
|
97
|
+
it('shows hints when input is clicked and empty', async ()=>{
|
|
98
98
|
renderMetadataSearch();
|
|
99
99
|
const input = getInput();
|
|
100
100
|
fireEvent.click(input);
|
|
101
101
|
await waitFor(()=>{
|
|
102
|
-
expect(screen.getByText(
|
|
102
|
+
expect(screen.getByText('Suggestions')).toBeInTheDocument();
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
-
it(
|
|
105
|
+
it('does not show hints when input has text', async ()=>{
|
|
106
106
|
renderMetadataSearch();
|
|
107
107
|
const input = getInput();
|
|
108
|
-
await user_event.type(input,
|
|
108
|
+
await user_event.type(input, 'test');
|
|
109
109
|
fireEvent.click(input);
|
|
110
|
-
expect(screen.queryByText(
|
|
110
|
+
expect(screen.queryByText('Suggestions')).not.toBeInTheDocument();
|
|
111
111
|
});
|
|
112
|
-
it(
|
|
112
|
+
it('hides hints when clicking outside', async ()=>{
|
|
113
113
|
renderMetadataSearch();
|
|
114
114
|
const input = getInput();
|
|
115
115
|
fireEvent.click(input);
|
|
116
116
|
await waitFor(()=>{
|
|
117
|
-
expect(screen.getByText(
|
|
117
|
+
expect(screen.getByText('Suggestions')).toBeInTheDocument();
|
|
118
118
|
});
|
|
119
119
|
fireEvent.mouseDown(document.body);
|
|
120
120
|
await waitFor(()=>{
|
|
121
|
-
expect(screen.queryByText(
|
|
121
|
+
expect(screen.queryByText('Suggestions')).not.toBeInTheDocument();
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
|
-
it(
|
|
124
|
+
it('displays search hint examples', async ()=>{
|
|
125
125
|
renderMetadataSearch();
|
|
126
126
|
const input = getInput();
|
|
127
127
|
fireEvent.click(input);
|
|
128
128
|
await waitFor(()=>{
|
|
129
129
|
expect(screen.getByText('files with extension ".pdf"')).toBeInTheDocument();
|
|
130
|
-
expect(screen.getByText(
|
|
131
|
-
expect(screen.getByText(
|
|
130
|
+
expect(screen.getByText('files bigger than 1MB')).toBeInTheDocument();
|
|
131
|
+
expect(screen.getByText('files tagged with color blue')).toBeInTheDocument();
|
|
132
132
|
});
|
|
133
133
|
});
|
|
134
|
-
it(
|
|
134
|
+
it('applies hint to input when hint is clicked', async ()=>{
|
|
135
135
|
renderMetadataSearch();
|
|
136
136
|
const input = getInput();
|
|
137
137
|
fireEvent.click(input);
|
|
138
138
|
await waitFor(()=>{
|
|
139
|
-
expect(screen.getByText(
|
|
139
|
+
expect(screen.getByText('Suggestions')).toBeInTheDocument();
|
|
140
140
|
});
|
|
141
141
|
const pdfHint = screen.getByText('files with extension ".pdf"');
|
|
142
142
|
fireEvent.click(pdfHint);
|
|
143
|
-
expect(input).toHaveValue(
|
|
144
|
-
expect(screen.queryByText(
|
|
143
|
+
expect(input).toHaveValue('key like /pdf$/');
|
|
144
|
+
expect(screen.queryByText('Suggestions')).not.toBeInTheDocument();
|
|
145
145
|
});
|
|
146
|
-
it(
|
|
146
|
+
it('focuses input after hint is selected', async ()=>{
|
|
147
147
|
renderMetadataSearch();
|
|
148
148
|
const input = getInput();
|
|
149
149
|
fireEvent.click(input);
|
|
150
150
|
await waitFor(()=>{
|
|
151
|
-
expect(screen.getByText(
|
|
151
|
+
expect(screen.getByText('Suggestions')).toBeInTheDocument();
|
|
152
152
|
});
|
|
153
|
-
const hint = screen.getByText(
|
|
153
|
+
const hint = screen.getByText('files bigger than 1MB');
|
|
154
154
|
fireEvent.click(hint);
|
|
155
155
|
expect(input).toHaveFocus();
|
|
156
156
|
});
|
|
157
|
-
it(
|
|
157
|
+
it('submits search when form is submitted', async ()=>{
|
|
158
158
|
renderMetadataSearch();
|
|
159
159
|
const input = getInput();
|
|
160
|
-
const searchButton = screen.getByRole(
|
|
160
|
+
const searchButton = screen.getByRole('button', {
|
|
161
161
|
name: /execute metadata search/i
|
|
162
162
|
});
|
|
163
|
-
await user_event.type(input,
|
|
163
|
+
await user_event.type(input, 'content-type=application/pdf');
|
|
164
164
|
fireEvent.click(searchButton);
|
|
165
|
-
expect(input).toHaveValue(
|
|
165
|
+
expect(input).toHaveValue('content-type=application/pdf');
|
|
166
166
|
});
|
|
167
|
-
it(
|
|
167
|
+
it('submits search when Enter key is pressed', async ()=>{
|
|
168
168
|
renderMetadataSearch();
|
|
169
169
|
const input = getInput();
|
|
170
|
-
await user_event.type(input,
|
|
171
|
-
fireEvent.submit(input.closest(
|
|
172
|
-
expect(input).toHaveValue(
|
|
170
|
+
await user_event.type(input, 'key like /test$/');
|
|
171
|
+
fireEvent.submit(input.closest('form'));
|
|
172
|
+
expect(input).toHaveValue('key like /test$/');
|
|
173
173
|
});
|
|
174
|
-
it(
|
|
174
|
+
it('is hidden when prefix points to a file', ()=>{
|
|
175
175
|
const { container } = renderMetadataSearch({}, [
|
|
176
|
-
|
|
176
|
+
'/bucket/test-bucket?prefix=folder/file.txt'
|
|
177
177
|
]);
|
|
178
|
-
const form = container.querySelector(
|
|
178
|
+
const form = container.querySelector('form');
|
|
179
179
|
expect(form).toHaveStyle({
|
|
180
|
-
visibility:
|
|
180
|
+
visibility: 'hidden'
|
|
181
181
|
});
|
|
182
182
|
});
|
|
183
|
-
it(
|
|
183
|
+
it('is hidden when prefix is a folder', ()=>{
|
|
184
184
|
const { container } = renderMetadataSearch({}, [
|
|
185
|
-
|
|
185
|
+
'/bucket/test-bucket?prefix=folder/'
|
|
186
186
|
]);
|
|
187
|
-
const form = container.querySelector(
|
|
187
|
+
const form = container.querySelector('form');
|
|
188
188
|
expect(form).toHaveStyle({
|
|
189
|
-
visibility:
|
|
189
|
+
visibility: 'hidden'
|
|
190
190
|
});
|
|
191
191
|
});
|
|
192
|
-
it(
|
|
192
|
+
it('prevents search submission when prefix points to a file', async ()=>{
|
|
193
193
|
const { container } = renderMetadataSearch({}, [
|
|
194
|
-
|
|
194
|
+
'/bucket/test-bucket?prefix=folder/file.txt'
|
|
195
195
|
]);
|
|
196
196
|
const input = getInput();
|
|
197
197
|
const searchButton = container.querySelector('button[type="submit"]');
|
|
198
|
-
await user_event.type(input,
|
|
198
|
+
await user_event.type(input, 'test query');
|
|
199
199
|
expect(searchButton).toBeDisabled();
|
|
200
200
|
});
|
|
201
201
|
});
|