box-ui-elements 23.4.0-beta.1 → 23.4.0-beta.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/explorer.js +1 -1
- package/dist/preview.js +1 -1
- package/dist/sidebar.js +1 -1
- package/es/common/types/metadata.js.flow +1 -0
- package/es/common/types/metadata.js.map +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.js +6 -2
- package/es/features/metadata-instance-editor/CascadePolicy.js.flow +19 -12
- package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
- package/es/features/metadata-instance-editor/Instance.js +31 -9
- package/es/features/metadata-instance-editor/Instance.js.flow +41 -9
- package/es/features/metadata-instance-editor/Instance.js.map +1 -1
- package/es/features/metadata-instance-editor/Instances.js +2 -0
- package/es/features/metadata-instance-editor/Instances.js.flow +3 -0
- package/es/features/metadata-instance-editor/Instances.js.map +1 -1
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +2 -0
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +3 -0
- package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.js +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
- package/es/features/metadata-instance-editor/TemplatedInstance.js +2 -0
- package/es/features/metadata-instance-editor/TemplatedInstance.js.flow +11 -1
- package/es/features/metadata-instance-editor/TemplatedInstance.js.map +1 -1
- package/es/features/metadata-instance-editor/constants.js +2 -1
- package/es/features/metadata-instance-editor/constants.js.flow +3 -1
- package/es/features/metadata-instance-editor/constants.js.map +1 -1
- package/es/features/metadata-instance-fields/DateMetadataField.js +30 -25
- package/es/features/metadata-instance-fields/DateMetadataField.js.flow +31 -27
- package/es/features/metadata-instance-fields/DateMetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/EnumMetadataField.js +8 -5
- package/es/features/metadata-instance-fields/EnumMetadataField.js.flow +8 -6
- package/es/features/metadata-instance-fields/EnumMetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/FloatMetadataField.js +2 -0
- package/es/features/metadata-instance-fields/FloatMetadataField.js.flow +3 -0
- package/es/features/metadata-instance-fields/FloatMetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/IntegerMetadataField.js +2 -0
- package/es/features/metadata-instance-fields/IntegerMetadataField.js.flow +3 -0
- package/es/features/metadata-instance-fields/IntegerMetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/MetadataField.js +7 -0
- package/es/features/metadata-instance-fields/MetadataField.js.flow +8 -0
- package/es/features/metadata-instance-fields/MetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/MultiSelectMetadataField.js +2 -0
- package/es/features/metadata-instance-fields/MultiSelectMetadataField.js.flow +3 -0
- package/es/features/metadata-instance-fields/MultiSelectMetadataField.js.map +1 -1
- package/es/features/metadata-instance-fields/TextMetadataField.js +8 -5
- package/es/features/metadata-instance-fields/TextMetadataField.js.flow +8 -6
- package/es/features/metadata-instance-fields/TextMetadataField.js.map +1 -1
- package/i18n/bn-IN.js +4 -4
- package/i18n/bn-IN.properties +4 -4
- package/i18n/da-DK.js +4 -4
- package/i18n/da-DK.properties +4 -4
- package/i18n/de-DE.js +4 -4
- package/i18n/de-DE.properties +4 -4
- package/i18n/es-419.js +3 -3
- package/i18n/es-419.properties +3 -3
- package/i18n/es-ES.js +3 -3
- package/i18n/es-ES.properties +3 -3
- package/i18n/fi-FI.js +3 -3
- package/i18n/fi-FI.properties +3 -3
- package/i18n/fr-CA.js +4 -4
- package/i18n/fr-CA.properties +4 -4
- package/i18n/fr-FR.js +4 -4
- package/i18n/fr-FR.properties +4 -4
- package/i18n/hi-IN.js +4 -4
- package/i18n/hi-IN.properties +4 -4
- package/i18n/it-IT.js +4 -4
- package/i18n/it-IT.properties +4 -4
- package/i18n/ko-KR.js +4 -4
- package/i18n/ko-KR.properties +4 -4
- package/i18n/nb-NO.js +4 -4
- package/i18n/nb-NO.properties +4 -4
- package/i18n/nl-NL.js +4 -4
- package/i18n/nl-NL.properties +4 -4
- package/i18n/pl-PL.js +4 -4
- package/i18n/pl-PL.properties +4 -4
- package/i18n/pt-BR.js +4 -4
- package/i18n/pt-BR.properties +4 -4
- package/i18n/ru-RU.js +4 -4
- package/i18n/ru-RU.properties +4 -4
- package/i18n/sv-SE.js +4 -4
- package/i18n/sv-SE.properties +4 -4
- package/i18n/tr-TR.js +4 -4
- package/i18n/tr-TR.properties +4 -4
- package/i18n/zh-CN.js +4 -4
- package/i18n/zh-CN.properties +4 -4
- package/i18n/zh-TW.js +4 -4
- package/i18n/zh-TW.properties +4 -4
- package/package.json +1 -1
- package/src/common/types/metadata.js +1 -0
- package/src/features/metadata-instance-editor/CascadePolicy.js +19 -12
- package/src/features/metadata-instance-editor/Instance.js +41 -9
- package/src/features/metadata-instance-editor/Instances.js +3 -0
- package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +3 -0
- package/src/features/metadata-instance-editor/TemplateDropdown.js +1 -1
- package/src/features/metadata-instance-editor/TemplatedInstance.js +11 -1
- package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +92 -1
- package/src/features/metadata-instance-editor/__tests__/Instance.test.js +207 -2
- package/src/features/metadata-instance-editor/__tests__/Instances.test.js +92 -3
- package/src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js +105 -0
- package/src/features/metadata-instance-editor/__tests__/TemplatedInstance.test.js +83 -1
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/CascadePolicy.test.js.snap +1 -0
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +16 -5
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +4 -2
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +1 -0
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplatedInstance.test.js.snap +2 -2
- package/src/features/metadata-instance-editor/constants.js +3 -1
- package/src/features/metadata-instance-fields/DateMetadataField.js +31 -27
- package/src/features/metadata-instance-fields/EnumMetadataField.js +8 -6
- package/src/features/metadata-instance-fields/FloatMetadataField.js +3 -0
- package/src/features/metadata-instance-fields/IntegerMetadataField.js +3 -0
- package/src/features/metadata-instance-fields/MetadataField.js +8 -0
- package/src/features/metadata-instance-fields/MultiSelectMetadataField.js +3 -0
- package/src/features/metadata-instance-fields/TextMetadataField.js +8 -6
- package/src/features/metadata-instance-fields/__tests__/DateMetadataField.test.js +59 -8
- package/src/features/metadata-instance-fields/__tests__/EnumMetadataField.test.js +63 -18
- package/src/features/metadata-instance-fields/__tests__/FloatMetadataField.test.js +68 -4
- package/src/features/metadata-instance-fields/__tests__/IntegerMetadataField.test.js +90 -4
- package/src/features/metadata-instance-fields/__tests__/MultiSelectMetadataField.test.js +95 -7
- package/src/features/metadata-instance-fields/__tests__/TextMetadataField.test.js +107 -14
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/DateMetadataField.test.js.snap +0 -18
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/EnumMetadataField.test.js.snap +0 -84
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/FloatMetadataField.test.js.snap +0 -8
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/IntegerMetadataField.test.js.snap +0 -8
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/MultiSelectMetadataField.test.js.snap +0 -58
- package/src/features/metadata-instance-fields/__tests__/__snapshots__/TextMetadataField.test.js.snap +0 -31
|
@@ -11,6 +11,7 @@ type Props = {
|
|
|
11
11
|
description?: string,
|
|
12
12
|
displayName: string,
|
|
13
13
|
error?: React.Node,
|
|
14
|
+
isDisabled?: boolean,
|
|
14
15
|
onChange: (key: string, value: MetadataFieldValue) => void,
|
|
15
16
|
onRemove: (key: string) => void,
|
|
16
17
|
type: string,
|
|
@@ -22,6 +23,7 @@ const FloatMetadataField = ({
|
|
|
22
23
|
displayName,
|
|
23
24
|
description,
|
|
24
25
|
error,
|
|
26
|
+
isDisabled,
|
|
25
27
|
onChange,
|
|
26
28
|
onRemove,
|
|
27
29
|
type,
|
|
@@ -32,6 +34,7 @@ const FloatMetadataField = ({
|
|
|
32
34
|
description={description}
|
|
33
35
|
displayName={displayName}
|
|
34
36
|
error={error}
|
|
37
|
+
isDisabled={isDisabled}
|
|
35
38
|
onChange={(key: string, value: MetadataFieldValue) => {
|
|
36
39
|
if (isValidValue(type, value)) {
|
|
37
40
|
onChange(key, value);
|
|
@@ -11,6 +11,7 @@ type Props = {
|
|
|
11
11
|
description?: string,
|
|
12
12
|
displayName: string,
|
|
13
13
|
error?: React.Node,
|
|
14
|
+
isDisabled?: boolean,
|
|
14
15
|
onChange: (key: string, value: MetadataFieldValue) => void,
|
|
15
16
|
onRemove: (key: string) => void,
|
|
16
17
|
type: string,
|
|
@@ -22,6 +23,7 @@ const IntegerMetadataField = ({
|
|
|
22
23
|
displayName,
|
|
23
24
|
description,
|
|
24
25
|
error,
|
|
26
|
+
isDisabled,
|
|
25
27
|
onChange,
|
|
26
28
|
onRemove,
|
|
27
29
|
type,
|
|
@@ -32,6 +34,7 @@ const IntegerMetadataField = ({
|
|
|
32
34
|
description={description}
|
|
33
35
|
displayName={displayName}
|
|
34
36
|
error={error}
|
|
37
|
+
isDisabled={isDisabled}
|
|
35
38
|
onChange={(key: string, value: MetadataFieldValue) => {
|
|
36
39
|
if (isValidValue(type, value)) {
|
|
37
40
|
onChange(key, value);
|
|
@@ -31,6 +31,7 @@ type Props = {
|
|
|
31
31
|
description?: string,
|
|
32
32
|
displayName: string,
|
|
33
33
|
error?: React.Node,
|
|
34
|
+
isDisabled?: boolean,
|
|
34
35
|
isHidden?: boolean,
|
|
35
36
|
onChange?: (key: string, value: MetadataFieldValue) => void,
|
|
36
37
|
onRemove?: (key: string) => void,
|
|
@@ -45,6 +46,7 @@ const MetadataField = ({
|
|
|
45
46
|
displayName,
|
|
46
47
|
description,
|
|
47
48
|
error,
|
|
49
|
+
isDisabled,
|
|
48
50
|
isHidden,
|
|
49
51
|
canEdit,
|
|
50
52
|
onChange,
|
|
@@ -79,6 +81,7 @@ const MetadataField = ({
|
|
|
79
81
|
dataValue={dataValue}
|
|
80
82
|
description={description}
|
|
81
83
|
displayName={displayName}
|
|
84
|
+
isDisabled={isDisabled}
|
|
82
85
|
onChange={onChange}
|
|
83
86
|
onRemove={onRemove}
|
|
84
87
|
/>
|
|
@@ -92,6 +95,7 @@ const MetadataField = ({
|
|
|
92
95
|
description={description}
|
|
93
96
|
displayName={displayName}
|
|
94
97
|
error={error}
|
|
98
|
+
isDisabled={isDisabled}
|
|
95
99
|
onChange={onChange}
|
|
96
100
|
onRemove={onRemove}
|
|
97
101
|
type={type}
|
|
@@ -106,6 +110,7 @@ const MetadataField = ({
|
|
|
106
110
|
description={description}
|
|
107
111
|
displayName={displayName}
|
|
108
112
|
error={error}
|
|
113
|
+
isDisabled={isDisabled}
|
|
109
114
|
onChange={onChange}
|
|
110
115
|
onRemove={onRemove}
|
|
111
116
|
type={type}
|
|
@@ -120,6 +125,7 @@ const MetadataField = ({
|
|
|
120
125
|
dataValue={dataValue}
|
|
121
126
|
description={description}
|
|
122
127
|
displayName={displayName}
|
|
128
|
+
isDisabled={isDisabled}
|
|
123
129
|
onChange={onChange}
|
|
124
130
|
onRemove={onRemove}
|
|
125
131
|
options={options}
|
|
@@ -134,6 +140,7 @@ const MetadataField = ({
|
|
|
134
140
|
dataValue={dataValue}
|
|
135
141
|
description={description}
|
|
136
142
|
displayName={displayName}
|
|
143
|
+
isDisabled={isDisabled}
|
|
137
144
|
onChange={onChange}
|
|
138
145
|
onRemove={onRemove}
|
|
139
146
|
options={options}
|
|
@@ -147,6 +154,7 @@ const MetadataField = ({
|
|
|
147
154
|
dataValue={dataValue}
|
|
148
155
|
description={description}
|
|
149
156
|
displayName={displayName}
|
|
157
|
+
isDisabled={isDisabled}
|
|
150
158
|
onChange={onChange}
|
|
151
159
|
onRemove={onRemove}
|
|
152
160
|
/>
|
|
@@ -18,6 +18,7 @@ type Props = {
|
|
|
18
18
|
dataValue?: MetadataFieldValue,
|
|
19
19
|
description?: string,
|
|
20
20
|
displayName: string,
|
|
21
|
+
isDisabled?: boolean,
|
|
21
22
|
onChange: (key: string, value: MetadataFieldValue) => void,
|
|
22
23
|
onRemove: (key: string) => void,
|
|
23
24
|
options?: Array<MetadataTemplateFieldOption>,
|
|
@@ -29,6 +30,7 @@ const MultiSelectMetadataField = ({
|
|
|
29
30
|
dataValue,
|
|
30
31
|
displayName,
|
|
31
32
|
description,
|
|
33
|
+
isDisabled,
|
|
32
34
|
onChange,
|
|
33
35
|
onRemove,
|
|
34
36
|
options = [],
|
|
@@ -41,6 +43,7 @@ const MultiSelectMetadataField = ({
|
|
|
41
43
|
{!!description && <i className="bdl-MultiSelectMetadataField-desc">{description}</i>}
|
|
42
44
|
<MultiSelect
|
|
43
45
|
blurExceptionClassNames={blurExceptionClassNames}
|
|
46
|
+
isDisabled={isDisabled}
|
|
44
47
|
isEscapedWithReference
|
|
45
48
|
isScrollable
|
|
46
49
|
onChange={(selectedOptions: Array<SelectOptionProp>) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { useIntl } from 'react-intl';
|
|
4
4
|
|
|
5
5
|
import TextInput from '../../components/text-input';
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@ type Props = {
|
|
|
14
14
|
description?: string,
|
|
15
15
|
displayName: string,
|
|
16
16
|
error?: React.Node,
|
|
17
|
-
|
|
17
|
+
isDisabled?: boolean,
|
|
18
18
|
onChange: (key: string, value: MetadataFieldValue) => void,
|
|
19
19
|
onRemove: (key: string) => void,
|
|
20
20
|
type?: string,
|
|
@@ -26,11 +26,13 @@ const TextMetadataField = ({
|
|
|
26
26
|
displayName,
|
|
27
27
|
description,
|
|
28
28
|
error,
|
|
29
|
-
|
|
29
|
+
isDisabled,
|
|
30
30
|
onChange,
|
|
31
31
|
onRemove,
|
|
32
32
|
type = 'text',
|
|
33
33
|
}: Props) => {
|
|
34
|
+
const { formatMessage } = useIntl();
|
|
35
|
+
|
|
34
36
|
let value = '';
|
|
35
37
|
|
|
36
38
|
if (typeof dataValue === 'number') {
|
|
@@ -45,6 +47,7 @@ const TextMetadataField = ({
|
|
|
45
47
|
description={description}
|
|
46
48
|
error={error}
|
|
47
49
|
hideOptionalLabel
|
|
50
|
+
disabled={isDisabled}
|
|
48
51
|
label={displayName}
|
|
49
52
|
name={dataKey}
|
|
50
53
|
onChange={(event: SyntheticKeyboardEvent<HTMLInputElement>) => {
|
|
@@ -55,12 +58,11 @@ const TextMetadataField = ({
|
|
|
55
58
|
onRemove(dataKey);
|
|
56
59
|
}
|
|
57
60
|
}}
|
|
58
|
-
placeholder={
|
|
61
|
+
placeholder={formatMessage(messages.metadataFieldSetValue)}
|
|
59
62
|
type={type}
|
|
60
63
|
value={value}
|
|
61
64
|
/>
|
|
62
65
|
);
|
|
63
66
|
};
|
|
64
67
|
|
|
65
|
-
export
|
|
66
|
-
export default injectIntl(TextMetadataField);
|
|
68
|
+
export default TextMetadataField;
|
|
@@ -1,14 +1,65 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
3
|
|
|
3
|
-
import
|
|
4
|
+
import DateMetadataField from '../DateMetadataField';
|
|
4
5
|
|
|
5
|
-
describe('
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
describe('DateMetadataField', () => {
|
|
7
|
+
const getDateFieldBaseProps = (props = {}) => ({
|
|
8
|
+
dataKey: 'testKeyDate',
|
|
9
|
+
displayName: 'Test Date Field',
|
|
10
|
+
onChange: jest.fn(),
|
|
11
|
+
onRemove: jest.fn(),
|
|
12
|
+
dataValue: '2023-01-15T00:00:00.000Z',
|
|
13
|
+
canEdit: true,
|
|
14
|
+
...props,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test('should correctly render a date field with its value', () => {
|
|
18
|
+
const testDate = '2024-07-26T00:00:00.000Z';
|
|
19
|
+
render(
|
|
20
|
+
<DateMetadataField
|
|
21
|
+
{...getDateFieldBaseProps({
|
|
22
|
+
dataValue: testDate,
|
|
23
|
+
displayName: 'My Test Date',
|
|
24
|
+
})}
|
|
25
|
+
/>,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const dateInput = screen.getByRole('textbox', { name: 'My Test Date' });
|
|
29
|
+
expect(dateInput).toBeInTheDocument();
|
|
30
|
+
expect(dateInput).toHaveValue('July 26, 2024');
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('should display description when provided', () => {
|
|
34
|
+
const descriptionText = 'This is a date field description.';
|
|
35
|
+
render(
|
|
36
|
+
<DateMetadataField
|
|
37
|
+
{...getDateFieldBaseProps({
|
|
38
|
+
displayName: 'My Date With Desc',
|
|
39
|
+
description: descriptionText,
|
|
40
|
+
})}
|
|
41
|
+
/>,
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
const dateInput = screen.getByRole('textbox', { name: 'My Date With Desc This is a date field description.' });
|
|
45
|
+
expect(dateInput).toBeInTheDocument();
|
|
46
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
50
|
+
render(<DateMetadataField {...getDateFieldBaseProps({ isDisabled: true })} />);
|
|
51
|
+
expect(screen.getByRole('textbox', { name: 'Test Date Field' })).toBeDisabled();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
55
|
+
render(<DateMetadataField {...getDateFieldBaseProps({ isDisabled: false })} />);
|
|
56
|
+
expect(screen.getByRole('textbox', { name: 'Test Date Field' })).not.toBeDisabled();
|
|
57
|
+
});
|
|
9
58
|
|
|
10
|
-
test('should
|
|
11
|
-
const
|
|
12
|
-
|
|
59
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
60
|
+
const props = getDateFieldBaseProps();
|
|
61
|
+
delete props.isDisabled;
|
|
62
|
+
render(<DateMetadataField {...props} />);
|
|
63
|
+
expect(screen.getByRole('textbox', { name: 'Test Date Field' })).not.toBeDisabled();
|
|
13
64
|
});
|
|
14
65
|
});
|
|
@@ -1,31 +1,76 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
4
|
|
|
3
|
-
import
|
|
5
|
+
import EnumMetadataField from '../EnumMetadataField';
|
|
4
6
|
|
|
5
|
-
describe('
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
describe('EnumMetadataField', () => {
|
|
8
|
+
const defaultOptions = [
|
|
9
|
+
{ key: 'opt1', displayName: 'Option 1' },
|
|
10
|
+
{ key: 'opt2', displayName: 'Option 2' },
|
|
11
|
+
{ key: 'opt3', displayName: 'Option 3' },
|
|
12
|
+
];
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
14
|
+
const getEnumFieldBaseProps = (props = {}) => ({
|
|
15
|
+
dataKey: 'testKeyEnum',
|
|
16
|
+
displayName: 'Test Enum Field',
|
|
17
|
+
onChange: jest.fn(),
|
|
18
|
+
onRemove: jest.fn(),
|
|
19
|
+
options: defaultOptions,
|
|
20
|
+
dataValue: 'opt1',
|
|
21
|
+
canEdit: true,
|
|
22
|
+
...props,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('should display options and reflect selected value', async () => {
|
|
26
|
+
render(
|
|
12
27
|
<EnumMetadataField
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
28
|
+
{...getEnumFieldBaseProps({
|
|
29
|
+
dataValue: 'opt2',
|
|
30
|
+
displayName: 'My Test Enum',
|
|
31
|
+
})}
|
|
16
32
|
/>,
|
|
17
33
|
);
|
|
18
|
-
|
|
34
|
+
|
|
35
|
+
const listbox = screen.getByRole('listbox', { name: 'My Test Enum' });
|
|
36
|
+
await userEvent.click(listbox);
|
|
37
|
+
|
|
38
|
+
expect(listbox).toBeInTheDocument();
|
|
39
|
+
expect(screen.getByRole('option', { name: 'opt2', selected: true })).toBeInTheDocument();
|
|
40
|
+
expect(screen.getByRole('option', { name: 'opt1' })).toBeInTheDocument();
|
|
41
|
+
expect(screen.getByRole('option', { name: 'opt3' })).toBeInTheDocument();
|
|
19
42
|
});
|
|
20
|
-
|
|
21
|
-
|
|
43
|
+
|
|
44
|
+
test('should display description when provided', () => {
|
|
45
|
+
const descriptionText = 'This is a test description.';
|
|
46
|
+
render(
|
|
22
47
|
<EnumMetadataField
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
48
|
+
{...getEnumFieldBaseProps({
|
|
49
|
+
displayName: 'My Enum With Desc',
|
|
50
|
+
description: descriptionText,
|
|
51
|
+
})}
|
|
27
52
|
/>,
|
|
28
53
|
);
|
|
29
|
-
|
|
54
|
+
|
|
55
|
+
const listbox = screen.getByRole('listbox', { name: 'My Enum With Desc This is a test description.' });
|
|
56
|
+
expect(listbox).toBeInTheDocument();
|
|
57
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
61
|
+
render(<EnumMetadataField {...getEnumFieldBaseProps({ isDisabled: true })} />);
|
|
62
|
+
expect(screen.getByRole('listbox', { name: 'Test Enum Field' })).toBeDisabled();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
66
|
+
render(<EnumMetadataField {...getEnumFieldBaseProps({ isDisabled: false })} />);
|
|
67
|
+
expect(screen.getByRole('listbox', { name: 'Test Enum Field' })).not.toBeDisabled();
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
71
|
+
const props = getEnumFieldBaseProps();
|
|
72
|
+
delete props.isDisabled;
|
|
73
|
+
render(<EnumMetadataField {...props} />);
|
|
74
|
+
expect(screen.getByRole('listbox', { name: 'Test Enum Field' })).not.toBeDisabled();
|
|
30
75
|
});
|
|
31
76
|
});
|
|
@@ -1,10 +1,74 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
3
|
|
|
3
4
|
import FloatMetadataField from '../FloatMetadataField';
|
|
4
5
|
|
|
5
|
-
describe('
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
describe('FloatMetadataField', () => {
|
|
7
|
+
const getFloatFieldBaseProps = (props = {}) => ({
|
|
8
|
+
dataKey: 'testKeyFloat',
|
|
9
|
+
displayName: 'Test Float Field',
|
|
10
|
+
onChange: jest.fn(),
|
|
11
|
+
onRemove: jest.fn(),
|
|
12
|
+
type: 'float',
|
|
13
|
+
dataValue: 123.45,
|
|
14
|
+
canEdit: true,
|
|
15
|
+
...props,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('should correctly render a float field with its value', () => {
|
|
19
|
+
render(
|
|
20
|
+
<FloatMetadataField
|
|
21
|
+
{...getFloatFieldBaseProps({
|
|
22
|
+
dataValue: 987.65,
|
|
23
|
+
displayName: 'My Test Float',
|
|
24
|
+
})}
|
|
25
|
+
/>,
|
|
26
|
+
);
|
|
27
|
+
const floatInput = screen.getByRole('textbox', { name: 'My Test Float' });
|
|
28
|
+
expect(floatInput).toBeInTheDocument();
|
|
29
|
+
expect(floatInput).toHaveValue('987.65');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('should display description when provided', () => {
|
|
33
|
+
const descriptionText = 'This is a float field description.';
|
|
34
|
+
render(
|
|
35
|
+
<FloatMetadataField
|
|
36
|
+
{...getFloatFieldBaseProps({
|
|
37
|
+
displayName: 'My Float With Desc',
|
|
38
|
+
description: descriptionText,
|
|
39
|
+
})}
|
|
40
|
+
/>,
|
|
41
|
+
);
|
|
42
|
+
const floatInput = screen.getByRole('textbox', {
|
|
43
|
+
name: 'My Float With Desc This is a float field description.',
|
|
44
|
+
});
|
|
45
|
+
expect(floatInput).toBeInTheDocument();
|
|
46
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
50
|
+
const descriptionText = 'A description for the float field.';
|
|
51
|
+
render(<FloatMetadataField {...getFloatFieldBaseProps({ isDisabled: true, description: descriptionText })} />);
|
|
52
|
+
expect(
|
|
53
|
+
screen.getByRole('textbox', { name: 'Test Float Field A description for the float field.' }),
|
|
54
|
+
).toBeDisabled();
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
58
|
+
const descriptionText = 'A description for the float field.';
|
|
59
|
+
render(<FloatMetadataField {...getFloatFieldBaseProps({ isDisabled: false, description: descriptionText })} />);
|
|
60
|
+
expect(
|
|
61
|
+
screen.getByRole('textbox', { name: 'Test Float Field A description for the float field.' }),
|
|
62
|
+
).not.toBeDisabled();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
66
|
+
const props = getFloatFieldBaseProps();
|
|
67
|
+
props.description = 'A description for the float field.';
|
|
68
|
+
delete props.isDisabled;
|
|
69
|
+
render(<FloatMetadataField {...props} />);
|
|
70
|
+
expect(
|
|
71
|
+
screen.getByRole('textbox', { name: 'Test Float Field A description for the float field.' }),
|
|
72
|
+
).not.toBeDisabled();
|
|
9
73
|
});
|
|
10
74
|
});
|
|
@@ -1,10 +1,96 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
3
|
|
|
3
4
|
import IntegerMetadataField from '../IntegerMetadataField';
|
|
4
5
|
|
|
5
|
-
describe('
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
describe('IntegerMetadataField', () => {
|
|
7
|
+
const getIntegerFieldBaseProps = (props = {}) => ({
|
|
8
|
+
dataKey: 'testKeyInteger',
|
|
9
|
+
displayName: 'Test Integer Field',
|
|
10
|
+
onChange: jest.fn(),
|
|
11
|
+
onRemove: jest.fn(),
|
|
12
|
+
type: 'integer',
|
|
13
|
+
dataValue: 123,
|
|
14
|
+
canEdit: true,
|
|
15
|
+
...props,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('should correctly render an integer field with its value', () => {
|
|
19
|
+
render(
|
|
20
|
+
<IntegerMetadataField
|
|
21
|
+
{...getIntegerFieldBaseProps({
|
|
22
|
+
dataValue: 456,
|
|
23
|
+
displayName: 'My Test Integer',
|
|
24
|
+
})}
|
|
25
|
+
/>,
|
|
26
|
+
);
|
|
27
|
+
const integerInput = screen.getByRole('textbox', { name: 'My Test Integer' });
|
|
28
|
+
expect(integerInput).toBeInTheDocument();
|
|
29
|
+
expect(integerInput).toHaveValue('456');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('should display description when provided', () => {
|
|
33
|
+
const descriptionText = 'This is an integer field description.';
|
|
34
|
+
render(
|
|
35
|
+
<IntegerMetadataField
|
|
36
|
+
{...getIntegerFieldBaseProps({
|
|
37
|
+
displayName: 'My Integer With Desc',
|
|
38
|
+
description: descriptionText,
|
|
39
|
+
})}
|
|
40
|
+
/>,
|
|
41
|
+
);
|
|
42
|
+
const integerInput = screen.getByRole('textbox', {
|
|
43
|
+
name: 'My Integer With Desc This is an integer field description.',
|
|
44
|
+
});
|
|
45
|
+
expect(integerInput).toBeInTheDocument();
|
|
46
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
50
|
+
const descriptionText = 'An integer field description for disabled test.';
|
|
51
|
+
render(
|
|
52
|
+
<IntegerMetadataField
|
|
53
|
+
{...getIntegerFieldBaseProps({
|
|
54
|
+
isDisabled: true,
|
|
55
|
+
description: descriptionText,
|
|
56
|
+
displayName: 'Disabled Integer Field',
|
|
57
|
+
})}
|
|
58
|
+
/>,
|
|
59
|
+
);
|
|
60
|
+
expect(
|
|
61
|
+
screen.getByRole('textbox', {
|
|
62
|
+
name: 'Disabled Integer Field An integer field description for disabled test.',
|
|
63
|
+
}),
|
|
64
|
+
).toBeDisabled();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
68
|
+
const descriptionText = 'An integer field description for enabled test.';
|
|
69
|
+
render(
|
|
70
|
+
<IntegerMetadataField
|
|
71
|
+
{...getIntegerFieldBaseProps({
|
|
72
|
+
isDisabled: false,
|
|
73
|
+
description: descriptionText,
|
|
74
|
+
displayName: 'Enabled Integer Field',
|
|
75
|
+
})}
|
|
76
|
+
/>,
|
|
77
|
+
);
|
|
78
|
+
expect(
|
|
79
|
+
screen.getByRole('textbox', {
|
|
80
|
+
name: 'Enabled Integer Field An integer field description for enabled test.',
|
|
81
|
+
}),
|
|
82
|
+
).not.toBeDisabled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
86
|
+
const props = getIntegerFieldBaseProps({
|
|
87
|
+
description: 'An integer field for default enabled test.',
|
|
88
|
+
displayName: 'Default Enabled Integer',
|
|
89
|
+
});
|
|
90
|
+
delete props.isDisabled;
|
|
91
|
+
render(<IntegerMetadataField {...props} />);
|
|
92
|
+
expect(
|
|
93
|
+
screen.getByRole('textbox', { name: 'Default Enabled Integer An integer field for default enabled test.' }),
|
|
94
|
+
).not.toBeDisabled();
|
|
9
95
|
});
|
|
10
96
|
});
|
|
@@ -1,15 +1,103 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
3
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
4
|
|
|
3
5
|
import MultiSelectMetadataField from '../MultiSelectMetadataField';
|
|
4
6
|
|
|
5
|
-
describe('
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
describe('MultiSelectMetadataField', () => {
|
|
8
|
+
const defaultOptions = [
|
|
9
|
+
{ key: 'opt1', displayName: 'Option 1' },
|
|
10
|
+
{ key: 'opt2', displayName: 'Option 2' },
|
|
11
|
+
{ key: 'opt3', displayName: 'Option 3' },
|
|
12
|
+
{ key: 'opt4', displayName: 'Option 4' },
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
const getMultiSelectFieldBaseProps = (props = {}) => ({
|
|
16
|
+
dataKey: 'testKeyMultiSelect',
|
|
17
|
+
displayName: 'Test MultiSelect Field',
|
|
18
|
+
onChange: jest.fn(),
|
|
19
|
+
onRemove: jest.fn(),
|
|
20
|
+
options: defaultOptions,
|
|
21
|
+
dataValue: ['opt1', 'opt3'],
|
|
22
|
+
canEdit: true,
|
|
23
|
+
...props,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
test('should display options and reflect selected values', async () => {
|
|
27
|
+
render(
|
|
28
|
+
<MultiSelectMetadataField
|
|
29
|
+
{...getMultiSelectFieldBaseProps({
|
|
30
|
+
dataValue: ['opt2', 'opt4'],
|
|
31
|
+
displayName: 'My Test MultiSelect',
|
|
32
|
+
})}
|
|
33
|
+
/>,
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const listbox = screen.getByRole('listbox', { name: 'My Test MultiSelect' });
|
|
37
|
+
expect(listbox).toBeInTheDocument();
|
|
38
|
+
await userEvent.click(listbox);
|
|
39
|
+
|
|
40
|
+
expect(screen.getByRole('option', { name: 'opt2', selected: true })).toBeInTheDocument();
|
|
41
|
+
expect(screen.getByRole('option', { name: 'opt4', selected: true })).toBeInTheDocument();
|
|
42
|
+
expect(screen.getByRole('option', { name: 'opt1', selected: false })).toBeInTheDocument();
|
|
43
|
+
expect(screen.getByRole('option', { name: 'opt3', selected: false })).toBeInTheDocument();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test('should display description when provided', () => {
|
|
47
|
+
const descriptionText = 'This is a multi-select field description.';
|
|
48
|
+
render(
|
|
49
|
+
<MultiSelectMetadataField
|
|
50
|
+
{...getMultiSelectFieldBaseProps({
|
|
51
|
+
displayName: 'My MultiSelect With Desc',
|
|
52
|
+
description: descriptionText,
|
|
53
|
+
})}
|
|
54
|
+
/>,
|
|
55
|
+
);
|
|
56
|
+
const listbox = screen.getByRole('listbox', {
|
|
57
|
+
name: 'My MultiSelect With Desc This is a multi-select field description.',
|
|
58
|
+
});
|
|
59
|
+
expect(listbox).toBeInTheDocument();
|
|
60
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
64
|
+
const descriptionText = 'A description for the multi-select field.';
|
|
65
|
+
render(
|
|
66
|
+
<MultiSelectMetadataField
|
|
67
|
+
{...getMultiSelectFieldBaseProps({
|
|
68
|
+
isDisabled: true,
|
|
69
|
+
description: descriptionText,
|
|
70
|
+
})}
|
|
71
|
+
/>,
|
|
72
|
+
);
|
|
73
|
+
expect(
|
|
74
|
+
screen.getByRole('listbox', { name: 'Test MultiSelect Field A description for the multi-select field.' }),
|
|
75
|
+
).toBeDisabled();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
79
|
+
const descriptionText = 'A description for the multi-select field.';
|
|
80
|
+
render(
|
|
81
|
+
<MultiSelectMetadataField
|
|
82
|
+
{...getMultiSelectFieldBaseProps({
|
|
83
|
+
isDisabled: false,
|
|
84
|
+
description: descriptionText,
|
|
85
|
+
})}
|
|
86
|
+
/>,
|
|
87
|
+
);
|
|
88
|
+
expect(
|
|
89
|
+
screen.getByRole('listbox', { name: 'Test MultiSelect Field A description for the multi-select field.' }),
|
|
90
|
+
).not.toBeDisabled();
|
|
9
91
|
});
|
|
10
92
|
|
|
11
|
-
test('should
|
|
12
|
-
const
|
|
13
|
-
|
|
93
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
94
|
+
const props = getMultiSelectFieldBaseProps({
|
|
95
|
+
description: 'A description for the multi-select field.',
|
|
96
|
+
});
|
|
97
|
+
delete props.isDisabled;
|
|
98
|
+
render(<MultiSelectMetadataField {...props} />);
|
|
99
|
+
expect(
|
|
100
|
+
screen.getByRole('listbox', { name: 'Test MultiSelect Field A description for the multi-select field.' }),
|
|
101
|
+
).not.toBeDisabled();
|
|
14
102
|
});
|
|
15
103
|
});
|