@dhis2/analytics 28.0.4 → 28.0.5
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/build/cjs/__demo__/OpenFileDialog.stories.js +19 -1
- package/build/cjs/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/cjs/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +48 -41
- package/build/cjs/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/cjs/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +36 -33
- package/build/cjs/components/FileMenu/__tests__/DeleteDialog.spec.js +24 -27
- package/build/cjs/components/FileMenu/__tests__/FileMenu.spec.js +51 -31
- package/build/cjs/components/FileMenu/__tests__/GetLinkDialog.spec.js +28 -31
- package/build/cjs/components/FileMenu/__tests__/RenameDialog.spec.js +17 -11
- package/build/cjs/components/FileMenu/__tests__/SaveAsDialog.spec.js +44 -37
- package/build/cjs/components/Filter/__tests__/Filter.spec.js +29 -34
- package/build/cjs/components/OpenFileDialog/CreatedByFilter.js +9 -1
- package/build/cjs/components/OpenFileDialog/OpenFileDialog.js +14 -34
- package/build/cjs/components/OpenFileDialog/VisTypeFilter.js +39 -1
- package/build/cjs/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +51 -0
- package/build/cjs/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +78 -44
- package/build/cjs/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/cjs/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/cjs/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +14 -21
- package/build/cjs/components/PeriodDimension/__tests__/PeriodDimension.spec.js +27 -23
- package/build/cjs/components/RichText/Editor/__tests__/Editor.spec.js +6 -7
- package/build/cjs/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/cjs/components/RichText/Parser/__tests__/Parser.spec.js +22 -23
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +52 -42
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +8 -8
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +23 -17
- package/build/cjs/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/cjs/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/cjs/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +19 -18
- package/build/cjs/components/Toolbar/__tests__/Toolbar.spec.js +8 -8
- package/build/cjs/components/Toolbar/__tests__/ToolbarSidebar.spec.js +14 -11
- package/build/cjs/components/Toolbar/__tests__/UpdateButton.spec.js +16 -14
- package/build/cjs/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/cjs/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +25 -16
- package/build/es/__demo__/OpenFileDialog.stories.js +17 -0
- package/build/es/components/DimensionsPanel/List/DimensionList.js +3 -1
- package/build/es/components/DimensionsPanel/List/__tests__/DimensionItem.spec.js +47 -40
- package/build/es/components/DimensionsPanel/List/__tests__/__snapshots__/DimensionItem.spec.js.snap +110 -114
- package/build/es/components/DimensionsPanel/__tests__/DimensionsPanel.spec.js +35 -32
- package/build/es/components/FileMenu/__tests__/DeleteDialog.spec.js +23 -26
- package/build/es/components/FileMenu/__tests__/FileMenu.spec.js +52 -32
- package/build/es/components/FileMenu/__tests__/GetLinkDialog.spec.js +27 -30
- package/build/es/components/FileMenu/__tests__/RenameDialog.spec.js +18 -12
- package/build/es/components/FileMenu/__tests__/SaveAsDialog.spec.js +43 -36
- package/build/es/components/Filter/__tests__/Filter.spec.js +28 -33
- package/build/es/components/OpenFileDialog/CreatedByFilter.js +7 -0
- package/build/es/components/OpenFileDialog/OpenFileDialog.js +14 -35
- package/build/es/components/OpenFileDialog/VisTypeFilter.js +38 -1
- package/build/es/components/OpenFileDialog/__tests__/OpenFileDialog.spec.js +49 -0
- package/build/es/components/OrgUnitDimension/__tests__/OrgUnitDimension.spec.js +77 -43
- package/build/es/components/PeriodDimension/FixedPeriodFilter.js +1 -0
- package/build/es/components/PeriodDimension/RelativePeriodFilter.js +3 -2
- package/build/es/components/PeriodDimension/__tests__/FixedPeriodSingleSelect.spec.js +13 -20
- package/build/es/components/PeriodDimension/__tests__/PeriodDimension.spec.js +26 -22
- package/build/es/components/RichText/Editor/__tests__/Editor.spec.js +7 -8
- package/build/es/components/RichText/Parser/__tests__/MdParser.spec.js +1 -1
- package/build/es/components/RichText/Parser/__tests__/Parser.spec.js +21 -22
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuBar.spec.js +53 -43
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuDropdown.spec.js +7 -7
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuList.spec.js +23 -18
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/HoverMenuListItem.spec.js +21 -15
- package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap +63 -0
- package/build/es/components/Toolbar/InterpretationsAndDetailsToggler.js +3 -1
- package/build/es/components/Toolbar/__tests__/InterpretationsAndDetailsToggler.spec.js +18 -17
- package/build/es/components/Toolbar/__tests__/Toolbar.spec.js +7 -7
- package/build/es/components/Toolbar/__tests__/ToolbarSidebar.spec.js +13 -10
- package/build/es/components/Toolbar/__tests__/UpdateButton.spec.js +15 -13
- package/build/es/components/TranslationDialog/TranslationModal/TranslationModal.js +2 -1
- package/build/es/components/TranslationDialog/TranslationModal/__tests__/TranslationModal.spec.js +24 -15
- package/package.json +2 -4
- package/build/cjs/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/cjs/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -29
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/cjs/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
- package/build/es/components/OrgUnitDimension/__tests__/__snapshots__/OrgUnitDimension.spec.js.snap +0 -89
- package/build/es/components/PeriodDimension/__tests__/PeriodSelector.spec.js +0 -26
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/FixedPeriodSingleSelect.spec.js.snap +0 -92
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodDimension.spec.js.snap +0 -16
- package/build/es/components/PeriodDimension/__tests__/__snapshots__/PeriodSelector.spec.js.snap +0 -89
|
@@ -1,102 +1,112 @@
|
|
|
1
|
-
import '@testing-library/
|
|
2
|
-
import
|
|
3
|
-
import { shallow } from 'enzyme';
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { HoverMenuBar, HoverMenuDropdown, HoverMenuList, HoverMenuListItem } from '../index.js';
|
|
6
5
|
describe('<HoverMenuBar/>', () => {
|
|
7
|
-
|
|
6
|
+
test('renders children', () => {
|
|
8
7
|
const childNode = 'text node';
|
|
9
|
-
|
|
10
|
-
expect(
|
|
8
|
+
render(/*#__PURE__*/React.createElement(HoverMenuBar, null, childNode));
|
|
9
|
+
expect(screen.getByText(childNode)).toBeInTheDocument();
|
|
11
10
|
});
|
|
12
|
-
|
|
11
|
+
test('accepts a `dataTest` prop', () => {
|
|
13
12
|
const dataTest = 'test';
|
|
14
|
-
|
|
13
|
+
render(/*#__PURE__*/React.createElement(HoverMenuBar, {
|
|
15
14
|
dataTest: dataTest
|
|
16
15
|
}, "children"));
|
|
17
|
-
expect(
|
|
16
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
18
17
|
});
|
|
19
18
|
describe('mouse interactions', () => {
|
|
20
|
-
|
|
19
|
+
test('does not open on hover before a dropdown anchor is clicked', async () => {
|
|
20
|
+
const user = userEvent.setup();
|
|
21
21
|
createFullMenuBarWrapper();
|
|
22
|
-
|
|
22
|
+
await user.hover(screen.getByText('Menu A'));
|
|
23
23
|
await expectMenuItemsInDocument([['Menu item A.1', false], ['Menu item A.2', false], ['Menu item A.3', false]]);
|
|
24
24
|
});
|
|
25
|
-
|
|
25
|
+
test('does not open when a disabled dropdown anchor is clicked', async () => {
|
|
26
|
+
const user = userEvent.setup();
|
|
26
27
|
createFullMenuBarWrapper();
|
|
27
|
-
|
|
28
|
+
await user.click(screen.getByText('Menu C'));
|
|
28
29
|
await expectMenuItemsInDocument([['Menu item A.1', false], ['Menu item A.2', false], ['Menu item A.3', false]]);
|
|
29
30
|
});
|
|
30
|
-
|
|
31
|
+
test('opens menu list when clicked', async () => {
|
|
32
|
+
const user = userEvent.setup();
|
|
31
33
|
createFullMenuBarWrapper();
|
|
32
|
-
|
|
34
|
+
await user.click(screen.getByText('Menu A'));
|
|
33
35
|
await expectMenuItemsInDocument([['Menu item A.1', true], ['Menu item B.1', false], ['Menu item C.1', false]]);
|
|
34
36
|
});
|
|
35
|
-
|
|
37
|
+
test('responds to hover once open', async () => {
|
|
38
|
+
const user = userEvent.setup();
|
|
36
39
|
createFullMenuBarWrapper();
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
await user.click(screen.getByText('Menu A'));
|
|
41
|
+
await user.hover(screen.getByText('Menu B'));
|
|
39
42
|
await expectMenuItemsInDocument([['Menu item A.1', false], ['Menu item B.1', true], ['Menu item C.1', false]]);
|
|
40
43
|
});
|
|
41
|
-
|
|
44
|
+
test('does not open disabled dropdown on hover in hover mode', async () => {
|
|
45
|
+
const user = userEvent.setup();
|
|
42
46
|
createFullMenuBarWrapper();
|
|
43
|
-
|
|
44
|
-
|
|
47
|
+
await user.click(screen.getByText('Menu B'));
|
|
48
|
+
await user.hover(screen.getByText('Menu C'));
|
|
45
49
|
await expectMenuItemsInDocument([['Menu item B.1', true], ['Menu item C.1', false]]);
|
|
46
50
|
});
|
|
47
|
-
|
|
51
|
+
test('opens submenus when in hover mode', async () => {
|
|
52
|
+
const user = userEvent.setup();
|
|
48
53
|
createFullMenuBarWrapper();
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
await user.click(screen.getByText('Menu B'));
|
|
55
|
+
await user.hover(screen.getByText('Menu item B.1'));
|
|
51
56
|
await expectMenuItemsInDocument([['Menu item B.1.1', true], ['Menu item B.1.2', true], ['Menu item B.1.3', true], ['Menu item B.2.1', false], ['Menu item B.2.2', false], ['Menu item B.2.3', false]]);
|
|
52
|
-
|
|
57
|
+
await user.hover(screen.getByText('Menu item B.2'));
|
|
53
58
|
await expectMenuItemsInDocument([['Menu item B.1.1', false], ['Menu item B.1.2', false], ['Menu item B.1.3', false], ['Menu item B.2.1', true], ['Menu item B.2.2', true], ['Menu item B.2.3', true]]);
|
|
54
59
|
});
|
|
55
|
-
|
|
60
|
+
test('does not open disabled submenus when in hover mode', async () => {
|
|
61
|
+
const user = userEvent.setup();
|
|
56
62
|
createFullMenuBarWrapper();
|
|
57
|
-
|
|
58
|
-
|
|
63
|
+
await user.click(screen.getByText('Menu B'));
|
|
64
|
+
await user.hover(screen.getByText('Menu item B.2'));
|
|
59
65
|
await expectMenuItemsInDocument([['Menu item B.2.1', true], ['Menu item B.2.2', true], ['Menu item B.2.3', true], ['Menu item B.3.1', false], ['Menu item B.3.2', false], ['Menu item B.3.3', false]]);
|
|
60
|
-
|
|
66
|
+
await user.hover(screen.getByText('Menu item B.3'));
|
|
61
67
|
await expectMenuItemsInDocument([['Menu item B.2.1', true], ['Menu item B.2.2', true], ['Menu item B.2.3', true], ['Menu item B.3.1', false], ['Menu item B.3.2', false], ['Menu item B.3.3', false]]);
|
|
62
68
|
});
|
|
63
|
-
|
|
69
|
+
test('closes when clicking on then document', async () => {
|
|
70
|
+
const user = userEvent.setup();
|
|
64
71
|
createFullMenuBarWrapper();
|
|
65
|
-
|
|
72
|
+
await user.click(screen.getByText('Menu A'));
|
|
66
73
|
await expectMenuItemsInDocument([['Menu item A.1', true]]);
|
|
67
|
-
|
|
74
|
+
await user.click(document.body);
|
|
68
75
|
await expectMenuItemsInDocument([['Menu item A.1', false]]);
|
|
69
76
|
});
|
|
70
|
-
|
|
77
|
+
test('stays open when clicking a open submenu anchor', async () => {
|
|
78
|
+
const user = userEvent.setup();
|
|
71
79
|
createFullMenuBarWrapper();
|
|
72
|
-
|
|
80
|
+
await user.click(screen.getByText('Menu B'));
|
|
73
81
|
await expectMenuItemsInDocument([['Menu item B.1', true]]);
|
|
74
|
-
|
|
82
|
+
await user.hover(screen.getByText('Menu item B.1'));
|
|
75
83
|
await expectMenuItemsInDocument([['Menu item B.1', true], ['Menu item B.1.1', true], ['Menu item B.1.2', true], ['Menu item B.1.3', true]]);
|
|
76
|
-
|
|
84
|
+
await user.click(screen.getByText('Menu item B.1'));
|
|
77
85
|
await expectMenuItemsInDocument([['Menu item B.1', true], ['Menu item B.1.1', true], ['Menu item B.1.2', true], ['Menu item B.1.3', true]]);
|
|
78
86
|
});
|
|
79
|
-
|
|
87
|
+
test('calls the onClick of the menu item and closes when clicking a menu item', async () => {
|
|
88
|
+
const user = userEvent.setup();
|
|
80
89
|
const menuItemOnClickSpy = jest.fn();
|
|
81
90
|
createFullMenuBarWrapper({
|
|
82
91
|
menuItemOnClickSpy
|
|
83
92
|
});
|
|
84
|
-
|
|
93
|
+
await user.click(screen.getByText('Menu A'));
|
|
85
94
|
await expectMenuItemsInDocument([['Menu item A.1', true]]);
|
|
86
|
-
|
|
95
|
+
await user.click(screen.getByText('Menu item A.1'));
|
|
87
96
|
expect(menuItemOnClickSpy).toHaveBeenCalledTimes(1);
|
|
88
97
|
await expectMenuItemsInDocument([['Menu item A.1', false]]);
|
|
89
98
|
});
|
|
90
|
-
|
|
99
|
+
test('calls the onClick of the menu item and closes when clicking a submenu item', async () => {
|
|
100
|
+
const user = userEvent.setup();
|
|
91
101
|
const subMenuItemOnClickSpy = jest.fn();
|
|
92
102
|
createFullMenuBarWrapper({
|
|
93
103
|
subMenuItemOnClickSpy
|
|
94
104
|
});
|
|
95
|
-
|
|
105
|
+
await user.click(screen.getByText('Menu B'));
|
|
96
106
|
await expectMenuItemsInDocument([['Menu item B.1', true]]);
|
|
97
|
-
|
|
107
|
+
await user.hover(screen.getByText('Menu item B.1'));
|
|
98
108
|
await expectMenuItemsInDocument([['Menu item B.1.1', true]]);
|
|
99
|
-
|
|
109
|
+
await user.click(screen.getByText('Menu item B.1.1'));
|
|
100
110
|
expect(subMenuItemOnClickSpy).toHaveBeenCalledTimes(1);
|
|
101
111
|
await expectMenuItemsInDocument([['Menu item B.1', false], ['Menu item B.1.1', false], ['Menu item B.1.1', false]]);
|
|
102
112
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { HoverMenuDropdown } from '../index.js';
|
|
4
4
|
describe('<HoverMenuDropdown/>', () => {
|
|
@@ -6,20 +6,20 @@ describe('<HoverMenuDropdown/>', () => {
|
|
|
6
6
|
* in the mouse interaction tests for the HoverMenuBar.
|
|
7
7
|
* Only the `dataTest` prop needs to be verified here. */
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
test('accepts a `dataTest` prop', () => {
|
|
10
10
|
const dataTest = 'test';
|
|
11
|
-
|
|
11
|
+
render(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
|
|
12
12
|
label: "test dropdown",
|
|
13
13
|
dataTest: dataTest
|
|
14
14
|
}, "children"));
|
|
15
|
-
expect(
|
|
15
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
16
16
|
});
|
|
17
|
-
|
|
17
|
+
test('accepts a `className` prop', () => {
|
|
18
18
|
const className = 'test';
|
|
19
|
-
|
|
19
|
+
render(/*#__PURE__*/React.createElement(HoverMenuDropdown, {
|
|
20
20
|
label: "test dropdown",
|
|
21
21
|
className: className
|
|
22
22
|
}, "children"));
|
|
23
|
-
expect(
|
|
23
|
+
expect(screen.getByRole('button')).toHaveClass(className);
|
|
24
24
|
});
|
|
25
25
|
});
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
import '@testing-library/jest-dom';
|
|
2
1
|
import { render, screen } from '@testing-library/react';
|
|
3
|
-
import { shallow } from 'enzyme';
|
|
4
2
|
import React from 'react';
|
|
5
3
|
import { HoverMenuList, HoverMenuListItem } from '../index.js';
|
|
6
4
|
describe('<HoverMenuList/>', () => {
|
|
7
5
|
const dataTest = 'test';
|
|
8
6
|
const childNode = 'children';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
expect(
|
|
7
|
+
test('renders children', () => {
|
|
8
|
+
render(/*#__PURE__*/React.createElement(HoverMenuList, null, childNode));
|
|
9
|
+
expect(screen.getByText(childNode)).toBeInTheDocument();
|
|
12
10
|
});
|
|
13
|
-
|
|
11
|
+
test('accept a `className` prop', () => {
|
|
14
12
|
const className = 'className';
|
|
15
|
-
|
|
13
|
+
render(/*#__PURE__*/React.createElement(HoverMenuList, {
|
|
14
|
+
dataTest: dataTest,
|
|
16
15
|
className: className
|
|
17
16
|
}, childNode));
|
|
18
|
-
expect(
|
|
17
|
+
expect(screen.getByTestId(dataTest)).toHaveClass(className);
|
|
19
18
|
});
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
test('accepts a `dataTest` prop', () => {
|
|
20
|
+
render(/*#__PURE__*/React.createElement(HoverMenuList, {
|
|
22
21
|
dataTest: dataTest
|
|
23
22
|
}, childNode));
|
|
24
|
-
expect(
|
|
23
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
25
24
|
});
|
|
26
|
-
|
|
25
|
+
test('accept a `dense` prop', () => {
|
|
27
26
|
render(/*#__PURE__*/React.createElement(HoverMenuList, {
|
|
28
27
|
dense: true
|
|
29
28
|
}, /*#__PURE__*/React.createElement(HoverMenuListItem, {
|
|
@@ -34,18 +33,24 @@ describe('<HoverMenuList/>', () => {
|
|
|
34
33
|
expect(screen.getByText('item 1').closest('li')).toHaveClass('dense');
|
|
35
34
|
expect(screen.getByText('item 2').closest('li')).toHaveClass('dense');
|
|
36
35
|
});
|
|
37
|
-
|
|
36
|
+
test('accept a `maxHeight` prop', () => {
|
|
38
37
|
const maxHeight = '100000px';
|
|
39
|
-
const
|
|
38
|
+
const {
|
|
39
|
+
container
|
|
40
|
+
} = render(/*#__PURE__*/React.createElement(HoverMenuList, {
|
|
41
|
+
dataTest: dataTest,
|
|
40
42
|
maxHeight: maxHeight
|
|
41
43
|
}, childNode));
|
|
42
|
-
expect(
|
|
44
|
+
expect(container).toMatchSnapshot();
|
|
43
45
|
});
|
|
44
|
-
|
|
46
|
+
test('accept a `maxWidth` prop', () => {
|
|
45
47
|
const maxWidth = '100000px';
|
|
46
|
-
const
|
|
48
|
+
const {
|
|
49
|
+
container
|
|
50
|
+
} = render(/*#__PURE__*/React.createElement(HoverMenuList, {
|
|
51
|
+
dataTest: dataTest,
|
|
47
52
|
maxWidth: maxWidth
|
|
48
53
|
}, childNode));
|
|
49
|
-
expect(
|
|
54
|
+
expect(container).toMatchSnapshot();
|
|
50
55
|
});
|
|
51
56
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { HoverMenuListItem } from '../index.js';
|
|
4
4
|
describe('<HoverMenuListItem/>', () => {
|
|
@@ -7,36 +7,42 @@ describe('<HoverMenuListItem/>', () => {
|
|
|
7
7
|
* Only the `className`, `dataTest`, `destructive` and
|
|
8
8
|
* `icon` prop need to be verified here. */
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
test('accepts a `className` prop', () => {
|
|
11
11
|
const className = 'className';
|
|
12
|
-
|
|
12
|
+
render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
|
|
13
13
|
className: className
|
|
14
14
|
}));
|
|
15
|
-
expect(
|
|
15
|
+
expect(screen.getByTestId('dhis2-uicore-hovermenulistitem')).toHaveClass(className);
|
|
16
16
|
});
|
|
17
|
-
|
|
17
|
+
test('accepts a `dataTest` prop', () => {
|
|
18
18
|
const dataTest = 'test';
|
|
19
|
-
|
|
19
|
+
render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
|
|
20
20
|
dataTest: dataTest
|
|
21
21
|
}));
|
|
22
|
-
expect(
|
|
22
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
23
23
|
});
|
|
24
|
-
|
|
25
|
-
const
|
|
24
|
+
test('accepts a `destructive` prop', () => {
|
|
25
|
+
const dataTest = 'test';
|
|
26
|
+
render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
|
|
27
|
+
dataTest: dataTest,
|
|
26
28
|
destructive: true
|
|
27
29
|
}));
|
|
28
|
-
expect(
|
|
30
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
29
31
|
});
|
|
30
|
-
|
|
32
|
+
test('accepts an `icon` prop', () => {
|
|
33
|
+
const dataTest = 'test';
|
|
31
34
|
const iconText = 'I am an icon';
|
|
32
35
|
const icon = /*#__PURE__*/React.createElement("span", {
|
|
33
36
|
id: "testicon"
|
|
34
37
|
}, iconText);
|
|
35
|
-
|
|
38
|
+
render(/*#__PURE__*/React.createElement(HoverMenuListItem, {
|
|
39
|
+
dataTest: dataTest,
|
|
36
40
|
icon: icon
|
|
37
41
|
}));
|
|
38
|
-
|
|
39
|
-
expect(
|
|
40
|
-
expect(
|
|
42
|
+
const iconWrapperEl = screen.getByTestId(dataTest).firstChild;
|
|
43
|
+
expect(iconWrapperEl).toBeInTheDocument();
|
|
44
|
+
expect(iconWrapperEl).toHaveClass('icon');
|
|
45
|
+
const iconEl = iconWrapperEl.closest('span');
|
|
46
|
+
expect(iconEl).toHaveTextContent(iconText);
|
|
41
47
|
});
|
|
42
48
|
});
|
package/build/es/components/Toolbar/HoverMenuBar/__tests__/__snapshots__/HoverMenuList.spec.js.snap
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`<HoverMenuList/> accept a \`maxHeight\` prop 1`] = `
|
|
4
|
+
<div>
|
|
5
|
+
<ul
|
|
6
|
+
data-test="test"
|
|
7
|
+
>
|
|
8
|
+
children
|
|
9
|
+
<style>
|
|
10
|
+
|
|
11
|
+
ul {
|
|
12
|
+
position: relative;
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: 0;
|
|
15
|
+
user-select: none;
|
|
16
|
+
background: #ffffff;
|
|
17
|
+
border: 1px solid #f3f5f7;
|
|
18
|
+
border-radius: 3px;
|
|
19
|
+
box-shadow: 0px 10px 15px -3px rgba(33,41,52,0.1), 0px 4px 6px -2px rgba(33,41,52,0.05);
|
|
20
|
+
display: inline-block;
|
|
21
|
+
min-width: 128px;
|
|
22
|
+
max-width: 380px;
|
|
23
|
+
max-height: 100000px;
|
|
24
|
+
padding: 4px 0;
|
|
25
|
+
overflow: auto;
|
|
26
|
+
list-style: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
</style>
|
|
30
|
+
</ul>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
exports[`<HoverMenuList/> accept a \`maxWidth\` prop 1`] = `
|
|
35
|
+
<div>
|
|
36
|
+
<ul
|
|
37
|
+
data-test="test"
|
|
38
|
+
>
|
|
39
|
+
children
|
|
40
|
+
<style>
|
|
41
|
+
|
|
42
|
+
ul {
|
|
43
|
+
position: relative;
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: 0;
|
|
46
|
+
user-select: none;
|
|
47
|
+
background: #ffffff;
|
|
48
|
+
border: 1px solid #f3f5f7;
|
|
49
|
+
border-radius: 3px;
|
|
50
|
+
box-shadow: 0px 10px 15px -3px rgba(33,41,52,0.1), 0px 4px 6px -2px rgba(33,41,52,0.05);
|
|
51
|
+
display: inline-block;
|
|
52
|
+
min-width: 128px;
|
|
53
|
+
max-width: 100000px;
|
|
54
|
+
max-height: auto;
|
|
55
|
+
padding: 4px 0;
|
|
56
|
+
overflow: auto;
|
|
57
|
+
list-style: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
</style>
|
|
61
|
+
</ul>
|
|
62
|
+
</div>
|
|
63
|
+
`;
|
|
@@ -14,7 +14,9 @@ export const InterpretationsAndDetailsToggler = ({
|
|
|
14
14
|
disabled: disabled,
|
|
15
15
|
"data-test": dataTest,
|
|
16
16
|
className: "jsx-1238484262 " + `jsx-${menuButtonStyles.__hash}`
|
|
17
|
-
}, isShowing ? /*#__PURE__*/React.createElement(IconChevronRight24,
|
|
17
|
+
}, isShowing ? /*#__PURE__*/React.createElement(IconChevronRight24, {
|
|
18
|
+
dataTest: `${dataTest}-showing`
|
|
19
|
+
}) : /*#__PURE__*/React.createElement(IconChevronLeft24, null), i18n.t('Interpretations and details'), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
18
20
|
id: menuButtonStyles.__hash
|
|
19
21
|
}, menuButtonStyles), /*#__PURE__*/React.createElement(_JSXStyle, {
|
|
20
22
|
id: "1238484262"
|
|
@@ -1,42 +1,43 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { InterpretationsAndDetailsToggler } from '../index.js';
|
|
4
5
|
describe('<InterpretationsAndDetailsToggler/>', () => {
|
|
5
6
|
const noop = () => {};
|
|
6
|
-
|
|
7
|
+
test('accepts an `onClick` prop', async () => {
|
|
8
|
+
const user = userEvent.setup();
|
|
7
9
|
const onClick = jest.fn();
|
|
8
|
-
|
|
10
|
+
render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
|
|
9
11
|
onClick: onClick
|
|
10
12
|
}));
|
|
11
|
-
|
|
13
|
+
await user.click(screen.getByRole('button'));
|
|
12
14
|
expect(onClick).toHaveBeenCalledTimes(1);
|
|
13
15
|
});
|
|
14
|
-
|
|
16
|
+
test('accepts a `dataTest` prop', () => {
|
|
15
17
|
const dataTest = 'test';
|
|
16
|
-
|
|
18
|
+
render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
|
|
17
19
|
onClick: noop,
|
|
18
20
|
dataTest: dataTest
|
|
19
21
|
}));
|
|
20
|
-
expect(
|
|
22
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
21
23
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
test('accepts a `disabled` prop', () => {
|
|
25
|
+
render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
|
|
24
26
|
disabled: true,
|
|
25
27
|
onClick: noop
|
|
26
28
|
}));
|
|
27
|
-
expect(
|
|
29
|
+
expect(screen.getByRole('button')).toBeDisabled();
|
|
28
30
|
});
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
+
test('accepts an `isShowing` prop', () => {
|
|
32
|
+
const showingDataTest = 'dhis2-analytics-interpretationsanddetailstoggler-showing';
|
|
33
|
+
render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
|
|
31
34
|
onClick: noop
|
|
32
35
|
}));
|
|
33
|
-
|
|
36
|
+
expect(screen.queryByTestId(showingDataTest)).not.toBeInTheDocument();
|
|
37
|
+
render(/*#__PURE__*/React.createElement(InterpretationsAndDetailsToggler, {
|
|
34
38
|
isShowing: true,
|
|
35
39
|
onClick: noop
|
|
36
40
|
}));
|
|
37
|
-
expect(
|
|
38
|
-
expect(wrapper.find('SvgChevronLeft24')).toHaveLength(1);
|
|
39
|
-
expect(wrapperWithIsShowing.find('SvgChevronRight24')).toHaveLength(1);
|
|
40
|
-
expect(wrapperWithIsShowing.find('SvgChevronLeft24')).toHaveLength(0);
|
|
41
|
+
expect(screen.getByTestId(showingDataTest)).toBeInTheDocument();
|
|
41
42
|
});
|
|
42
43
|
});
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Toolbar } from '../index.js';
|
|
4
4
|
describe('<Toolbar/>', () => {
|
|
5
|
-
|
|
5
|
+
test('renders children', () => {
|
|
6
6
|
const childNode = 'text node';
|
|
7
|
-
|
|
8
|
-
expect(
|
|
7
|
+
render(/*#__PURE__*/React.createElement(Toolbar, null, childNode));
|
|
8
|
+
expect(screen.getByText(childNode)).toBeInTheDocument();
|
|
9
9
|
});
|
|
10
|
-
|
|
10
|
+
test('accepts a `dataTest` prop', () => {
|
|
11
11
|
const dataTest = 'test';
|
|
12
|
-
|
|
12
|
+
render(/*#__PURE__*/React.createElement(Toolbar, {
|
|
13
13
|
dataTest: dataTest
|
|
14
14
|
}));
|
|
15
|
-
expect(
|
|
15
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
16
16
|
});
|
|
17
17
|
});
|
|
@@ -1,23 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { ToolbarSidebar } from '../index.js';
|
|
4
4
|
describe('<ToolbarSidebar/>', () => {
|
|
5
|
-
|
|
5
|
+
test('renders children', () => {
|
|
6
6
|
const childNode = 'text node';
|
|
7
|
-
|
|
8
|
-
expect(
|
|
7
|
+
render(/*#__PURE__*/React.createElement(ToolbarSidebar, null, childNode));
|
|
8
|
+
expect(screen.getByText(childNode)).toBeInTheDocument();
|
|
9
9
|
});
|
|
10
|
-
|
|
10
|
+
test('accepts a `dataTest` prop', () => {
|
|
11
11
|
const dataTest = 'test';
|
|
12
|
-
|
|
12
|
+
render(/*#__PURE__*/React.createElement(ToolbarSidebar, {
|
|
13
13
|
dataTest: dataTest
|
|
14
14
|
}));
|
|
15
|
-
expect(
|
|
15
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
const
|
|
17
|
+
test('accepts a `isHidden` prop', () => {
|
|
18
|
+
const {
|
|
19
|
+
container
|
|
20
|
+
} = render(/*#__PURE__*/React.createElement(ToolbarSidebar, {
|
|
19
21
|
isHidden: true
|
|
20
22
|
}));
|
|
21
|
-
|
|
23
|
+
const divEl = container.querySelector('div');
|
|
24
|
+
expect(divEl).toHaveClass('isHidden');
|
|
22
25
|
});
|
|
23
26
|
});
|
|
@@ -1,36 +1,38 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import userEvent from '@testing-library/user-event';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { UpdateButton } from '../index.js';
|
|
4
5
|
describe('<UpdateButton/>', () => {
|
|
5
6
|
const noop = () => {};
|
|
6
|
-
|
|
7
|
+
test('accepts an `onClick` prop', async () => {
|
|
8
|
+
const user = userEvent.setup();
|
|
7
9
|
const onClick = jest.fn();
|
|
8
|
-
|
|
10
|
+
render(/*#__PURE__*/React.createElement(UpdateButton, {
|
|
9
11
|
onClick: onClick
|
|
10
12
|
}));
|
|
11
|
-
|
|
13
|
+
await user.click(screen.getByRole('button'));
|
|
12
14
|
expect(onClick).toHaveBeenCalledTimes(1);
|
|
13
15
|
});
|
|
14
|
-
|
|
16
|
+
test('accepts a `dataTest` prop', () => {
|
|
15
17
|
const dataTest = 'test';
|
|
16
|
-
|
|
18
|
+
render(/*#__PURE__*/React.createElement(UpdateButton, {
|
|
17
19
|
onClick: noop,
|
|
18
20
|
dataTest: dataTest
|
|
19
21
|
}));
|
|
20
|
-
expect(
|
|
22
|
+
expect(screen.getByTestId(dataTest)).toBeInTheDocument();
|
|
21
23
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
test('accepts a `disabled` prop', () => {
|
|
25
|
+
render(/*#__PURE__*/React.createElement(UpdateButton, {
|
|
24
26
|
disabled: true,
|
|
25
27
|
onClick: noop
|
|
26
28
|
}));
|
|
27
|
-
expect(
|
|
29
|
+
expect(screen.getByRole('button')).toBeDisabled();
|
|
28
30
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
test('accepts an `loading` prop', () => {
|
|
32
|
+
render(/*#__PURE__*/React.createElement(UpdateButton, {
|
|
31
33
|
onClick: noop,
|
|
32
34
|
loading: true
|
|
33
35
|
}));
|
|
34
|
-
expect(
|
|
36
|
+
expect(screen.getByTestId('dhis2-uicore-circularloader')).toBeInTheDocument();
|
|
35
37
|
});
|
|
36
38
|
});
|
|
@@ -29,7 +29,8 @@ export const TranslationModal = ({
|
|
|
29
29
|
return /*#__PURE__*/React.createElement(Modal, {
|
|
30
30
|
large: true,
|
|
31
31
|
position: "middle",
|
|
32
|
-
onClose: onClose
|
|
32
|
+
onClose: onClose,
|
|
33
|
+
dataTest: "dhis2-analytics-translation-modal"
|
|
33
34
|
}, /*#__PURE__*/React.createElement(ModalTitle, null, i18n.t('Translate: {{objectName}}', {
|
|
34
35
|
objectName: objectToTranslate.name || 'TEXT',
|
|
35
36
|
// XXX
|