box-ui-elements 23.3.1-beta.1 → 23.4.0-beta.2
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/sharing.js +1 -1
- package/dist/sharing.js.LICENSE.txt +10 -0
- 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/components/notification/Notification.js +17 -8
- package/es/components/notification/Notification.js.flow +15 -8
- package/es/components/notification/Notification.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/package.json +1 -1
- package/src/common/types/metadata.js +1 -0
- package/src/components/notification/Notification.js +15 -8
- package/src/components/notification/__tests__/Notification.test.js +21 -1
- 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
|
@@ -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
|
});
|
|
@@ -1,24 +1,117 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { render, screen } from '../../../test-utils/testing-library';
|
|
2
3
|
|
|
3
|
-
import
|
|
4
|
+
import TextMetadataField from '../TextMetadataField';
|
|
4
5
|
|
|
5
|
-
describe('
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
describe('TextMetadataField', () => {
|
|
7
|
+
const getTextFieldBaseProps = (props = {}) => ({
|
|
8
|
+
dataKey: 'testKeyText',
|
|
9
|
+
displayName: 'Test Text Field',
|
|
10
|
+
onChange: jest.fn(),
|
|
11
|
+
onRemove: jest.fn(),
|
|
12
|
+
type: 'text',
|
|
13
|
+
dataValue: 'initial text value',
|
|
14
|
+
canEdit: true,
|
|
15
|
+
...props,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('should correctly render a text field with its value', () => {
|
|
19
|
+
render(
|
|
20
|
+
<TextMetadataField
|
|
21
|
+
{...getTextFieldBaseProps({
|
|
22
|
+
dataValue: 'specific text',
|
|
23
|
+
displayName: 'My Test Text',
|
|
24
|
+
})}
|
|
25
|
+
/>,
|
|
26
|
+
);
|
|
27
|
+
const textInput = screen.getByRole('textbox', { name: 'My Test Text' });
|
|
28
|
+
expect(textInput).toBeInTheDocument();
|
|
29
|
+
expect(textInput).toHaveValue('specific text');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('should correctly render a number field with its numeric value', () => {
|
|
33
|
+
render(
|
|
34
|
+
<TextMetadataField
|
|
35
|
+
{...getTextFieldBaseProps({
|
|
36
|
+
dataValue: 12345,
|
|
37
|
+
displayName: 'My Test Number',
|
|
38
|
+
type: 'number',
|
|
39
|
+
})}
|
|
40
|
+
/>,
|
|
41
|
+
);
|
|
42
|
+
const numberInput = screen.getByRole('spinbutton', { name: 'My Test Number' });
|
|
43
|
+
expect(numberInput).toBeInTheDocument();
|
|
44
|
+
expect(numberInput).toHaveValue(12345);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('should correctly render zero in a number field', () => {
|
|
48
|
+
render(
|
|
49
|
+
<TextMetadataField
|
|
50
|
+
{...getTextFieldBaseProps({
|
|
51
|
+
dataValue: 0,
|
|
52
|
+
displayName: 'My Zero Number',
|
|
53
|
+
type: 'number',
|
|
54
|
+
})}
|
|
55
|
+
/>,
|
|
56
|
+
);
|
|
57
|
+
const zeroInput = screen.getByRole('spinbutton', { name: 'My Zero Number' });
|
|
58
|
+
expect(zeroInput).toBeInTheDocument();
|
|
59
|
+
expect(zeroInput).toHaveValue(0);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('should display description when provided', () => {
|
|
63
|
+
const descriptionText = 'This is a text field description.';
|
|
64
|
+
render(
|
|
65
|
+
<TextMetadataField
|
|
66
|
+
{...getTextFieldBaseProps({
|
|
67
|
+
displayName: 'My Text With Desc',
|
|
68
|
+
description: descriptionText,
|
|
69
|
+
})}
|
|
70
|
+
/>,
|
|
71
|
+
);
|
|
72
|
+
const textInput = screen.getByRole('textbox', { name: 'My Text With Desc This is a text field description.' });
|
|
73
|
+
expect(textInput).toBeInTheDocument();
|
|
74
|
+
expect(screen.getByText(descriptionText)).toBeInTheDocument();
|
|
75
|
+
});
|
|
9
76
|
|
|
10
|
-
test('should
|
|
11
|
-
const
|
|
12
|
-
|
|
77
|
+
test('should render as disabled when isDisabled is true', () => {
|
|
78
|
+
const descriptionText = 'A description for the text field.';
|
|
79
|
+
render(
|
|
80
|
+
<TextMetadataField
|
|
81
|
+
{...getTextFieldBaseProps({
|
|
82
|
+
isDisabled: true,
|
|
83
|
+
description: descriptionText,
|
|
84
|
+
})}
|
|
85
|
+
/>,
|
|
86
|
+
);
|
|
87
|
+
expect(
|
|
88
|
+
screen.getByRole('textbox', { name: 'Test Text Field A description for the text field.' }),
|
|
89
|
+
).toBeDisabled();
|
|
13
90
|
});
|
|
14
91
|
|
|
15
|
-
test('should
|
|
16
|
-
const
|
|
17
|
-
|
|
92
|
+
test('should render as enabled when isDisabled is false', () => {
|
|
93
|
+
const descriptionText = 'A description for the text field.';
|
|
94
|
+
render(
|
|
95
|
+
<TextMetadataField
|
|
96
|
+
{...getTextFieldBaseProps({
|
|
97
|
+
isDisabled: false,
|
|
98
|
+
description: descriptionText,
|
|
99
|
+
})}
|
|
100
|
+
/>,
|
|
101
|
+
);
|
|
102
|
+
expect(
|
|
103
|
+
screen.getByRole('textbox', { name: 'Test Text Field A description for the text field.' }),
|
|
104
|
+
).not.toBeDisabled();
|
|
18
105
|
});
|
|
19
106
|
|
|
20
|
-
test('should
|
|
21
|
-
const
|
|
22
|
-
|
|
107
|
+
test('should render as enabled when isDisabled is not provided', () => {
|
|
108
|
+
const props = getTextFieldBaseProps({
|
|
109
|
+
description: 'A description for the text field.',
|
|
110
|
+
});
|
|
111
|
+
delete props.isDisabled;
|
|
112
|
+
render(<TextMetadataField {...props} />);
|
|
113
|
+
expect(
|
|
114
|
+
screen.getByRole('textbox', { name: 'Test Text Field A description for the text field.' }),
|
|
115
|
+
).not.toBeDisabled();
|
|
23
116
|
});
|
|
24
117
|
});
|
package/src/features/metadata-instance-fields/__tests__/__snapshots__/DateMetadataField.test.js.snap
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`features/metadata-instance-editor/fields/DateMetadataField should correctly render a date field 1`] = `
|
|
4
|
-
<DatePicker
|
|
5
|
-
className="bdl-DateMetadataField"
|
|
6
|
-
dateFormat="utcISOString"
|
|
7
|
-
displayFormat={
|
|
8
|
-
{
|
|
9
|
-
"day": "numeric",
|
|
10
|
-
"month": "long",
|
|
11
|
-
"year": "numeric",
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
hideOptionalLabel={true}
|
|
15
|
-
onChange={[Function]}
|
|
16
|
-
value={2018-06-13T07:00:00.000Z}
|
|
17
|
-
/>
|
|
18
|
-
`;
|
package/src/features/metadata-instance-fields/__tests__/__snapshots__/EnumMetadataField.test.js.snap
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
-
|
|
3
|
-
exports[`features/metadata-instance-editor/fields/EnumMetadataField should correctly render an enum field 1`] = `
|
|
4
|
-
<div
|
|
5
|
-
className="bdl-EnumMetadataField"
|
|
6
|
-
>
|
|
7
|
-
<Label>
|
|
8
|
-
<SingleSelectField
|
|
9
|
-
isEscapedWithReference={true}
|
|
10
|
-
isScrollable={true}
|
|
11
|
-
onChange={[Function]}
|
|
12
|
-
options={
|
|
13
|
-
[
|
|
14
|
-
{
|
|
15
|
-
"displayText": undefined,
|
|
16
|
-
"isSelectable": false,
|
|
17
|
-
"value": undefined,
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"displayText": "foo",
|
|
21
|
-
"isSelectable": true,
|
|
22
|
-
"value": "foo",
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"displayText": "bar",
|
|
26
|
-
"isSelectable": true,
|
|
27
|
-
"value": "bar",
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"displayText": "baz",
|
|
31
|
-
"isSelectable": true,
|
|
32
|
-
"value": "baz",
|
|
33
|
-
},
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
selectedValue="value"
|
|
37
|
-
/>
|
|
38
|
-
</Label>
|
|
39
|
-
</div>
|
|
40
|
-
`;
|
|
41
|
-
|
|
42
|
-
exports[`features/metadata-instance-editor/fields/EnumMetadataField should correctly render an enum field with description 1`] = `
|
|
43
|
-
<div
|
|
44
|
-
className="bdl-EnumMetadataField"
|
|
45
|
-
>
|
|
46
|
-
<Label>
|
|
47
|
-
<i
|
|
48
|
-
className="bdl-EnumMetadataField-desc"
|
|
49
|
-
>
|
|
50
|
-
description
|
|
51
|
-
</i>
|
|
52
|
-
<SingleSelectField
|
|
53
|
-
isEscapedWithReference={true}
|
|
54
|
-
isScrollable={true}
|
|
55
|
-
onChange={[Function]}
|
|
56
|
-
options={
|
|
57
|
-
[
|
|
58
|
-
{
|
|
59
|
-
"displayText": undefined,
|
|
60
|
-
"isSelectable": false,
|
|
61
|
-
"value": undefined,
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
"displayText": "foo",
|
|
65
|
-
"isSelectable": true,
|
|
66
|
-
"value": "foo",
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"displayText": "bar",
|
|
70
|
-
"isSelectable": true,
|
|
71
|
-
"value": "bar",
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"displayText": "baz",
|
|
75
|
-
"isSelectable": true,
|
|
76
|
-
"value": "baz",
|
|
77
|
-
},
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
selectedValue="value"
|
|
81
|
-
/>
|
|
82
|
-
</Label>
|
|
83
|
-
</div>
|
|
84
|
-
`;
|