@centreon/ui 26.12.0 → 26.12.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.
Files changed (57) hide show
  1. package/package.json +6 -3
  2. package/public/mockServiceWorker.js +31 -8
  3. package/src/Dashboard/Dashboard.browser.test.tsx +107 -0
  4. package/src/Form/Form.browser.test.tsx +445 -0
  5. package/src/Form/Inputs/ExclusiveCheckboxGroup.browser.test.tsx +304 -0
  6. package/src/Form/Inputs/SegmentedButtons.browser.test.tsx +113 -0
  7. package/src/InputField/Number/Number.browser.test.tsx +109 -0
  8. package/src/InputField/Select/Autocomplete/Connected/Multi/MultiConnectedAutocompleteField.browser.test.tsx +250 -0
  9. package/src/Listing/Listing.browser.test.tsx +476 -0
  10. package/src/Module/Module.browser.test.tsx +145 -0
  11. package/src/Pagination/Pagination.browser.test.tsx +184 -0
  12. package/src/Panel/Section/index.test.tsx +1 -1
  13. package/src/RichTextEditor/RichTextEditor.browser.test.tsx +567 -0
  14. package/src/RichTextEditor/plugins/FloatingLinkEditorPlugin.tsx +3 -1
  15. package/src/TimePeriods/ResolutionTimePeriod.browser.test.tsx +143 -0
  16. package/src/TimePeriods/TimePeriods.browser.test.tsx +468 -0
  17. package/src/Typography/FluidTypography/FluidTypography.browser.test.tsx +54 -0
  18. package/src/api/useMutationQuery/useMutationQuery.browser.test.tsx +154 -0
  19. package/src/components/CollapsibleItem/CollapsibleItem.browser.test.tsx +120 -0
  20. package/src/components/CopyCommand/CopyCommand.browser.test.tsx +287 -0
  21. package/src/components/CrudPage/CrudPage.browser.test.tsx +659 -0
  22. package/src/components/DataTable/DataTable.browser.test.tsx +257 -0
  23. package/src/components/Form/AccessRights/AccessRights.browser.test.tsx +527 -0
  24. package/src/components/ItemComposition/ItemComposition.browser.test.tsx +172 -0
  25. package/src/components/Layout/PageLayout.browser.test.tsx +114 -0
  26. package/src/components/Modal/ConfirmationModal/ConfirmationModal.browser.test.tsx +237 -0
  27. package/src/components/SortableEntriesList/SortableEntriesList.browser.test.tsx +981 -0
  28. package/src/components/Tabs/Tabs.browser.test.tsx +115 -0
  29. package/src/utils/useFullscreen/Fullscreen.browser.test.tsx +176 -0
  30. package/src/utils/useLocale/useLocale.browser.test.tsx +49 -0
  31. package/src/utils/useLocaleTimezoneDate/{LocaleTimezoneDate.cypress.spec.tsx → LocaleTimezoneDate.browser.test.tsx} +24 -11
  32. package/src/Dashboard/Dashboard.cypress.spec.tsx +0 -71
  33. package/src/Form/Form.cypress.spec.tsx +0 -306
  34. package/src/Form/Inputs/ExclusiveCheckboxGroup.cypress.spec.tsx +0 -236
  35. package/src/Form/Inputs/SegmentedButtons.cypress.spec.tsx +0 -101
  36. package/src/InputField/Number/Number.cypress.spec.tsx +0 -89
  37. package/src/InputField/Select/Autocomplete/Connected/Multi/MultiConnectedAutocompleteField.cypress.spec.tsx +0 -182
  38. package/src/Listing/Listing.cypress.spec.tsx +0 -349
  39. package/src/Module/Module.cypress.spec.tsx +0 -127
  40. package/src/Pagination/Pagination.cypress.spec.tsx +0 -140
  41. package/src/RichTextEditor/RichTextEditor.cypress.spec.tsx +0 -408
  42. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +0 -74
  43. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +0 -488
  44. package/src/Typography/FluidTypography/FluidTypography.cypress.spec.tsx +0 -27
  45. package/src/api/useMutationQuery/useMutationQuery.cypress.spec.tsx +0 -93
  46. package/src/components/CollapsibleItem/CollapsibleItem.cypress.spec.tsx +0 -76
  47. package/src/components/CopyCommand/CopyCommand.cypress.spec.tsx +0 -167
  48. package/src/components/CrudPage/CrudPage.cypress.spec.tsx +0 -561
  49. package/src/components/DataTable/DataTable.cypress.spec.tsx +0 -174
  50. package/src/components/Form/AccessRights/AccessRights.cypress.spec.tsx +0 -376
  51. package/src/components/ItemComposition/ItemComposition.cypress.spec.tsx +0 -112
  52. package/src/components/Layout/PageLayout.cypress.spec.tsx +0 -64
  53. package/src/components/Modal/ConfirmationModal/ConfirmationModal.cypress.spec.tsx +0 -171
  54. package/src/components/SortableEntriesList/SortableEntriesList.cypress.spec.tsx +0 -792
  55. package/src/components/Tabs/Tabs.cypress.spec.tsx +0 -69
  56. package/src/utils/useFullscreen/Fullscreen.cypress.spec.tsx +0 -130
  57. package/src/utils/useLocale/useLocale.cypress.spec.tsx +0 -40
@@ -0,0 +1,184 @@
1
+ import { interceptAPIRequest, waitForRequest } from '@test-setup/api';
2
+ import { render } from '@test-setup/render';
3
+ import { screen, waitFor } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
5
+
6
+ import TestQueryProvider from '../api/TestQueryProvider';
7
+ import { Method } from '../api/useMutationQuery';
8
+ import { labelNextPage, labelPreviousPage } from '../Listing/translatedLabels';
9
+ import Pagination from './Pagination';
10
+ import { generateItems } from './utils';
11
+
12
+ const defaultTotalItems = 25;
13
+ const itemsPerPage = 6;
14
+ const totalPages = Math.ceil(defaultTotalItems / itemsPerPage);
15
+
16
+ interface InitializeProps {
17
+ currentPage?: number;
18
+ total?: number;
19
+ }
20
+
21
+ const initialize = ({
22
+ total = defaultTotalItems,
23
+ currentPage = 1
24
+ }: InitializeProps): void => {
25
+ interceptAPIRequest({
26
+ alias: 'list',
27
+ method: Method.GET,
28
+ path: '**/listing**',
29
+ response: {
30
+ meta: {
31
+ limit: itemsPerPage,
32
+ page: currentPage,
33
+ total
34
+ },
35
+ result: generateItems(itemsPerPage)
36
+ }
37
+ });
38
+
39
+ render(
40
+ <div
41
+ style={{
42
+ alignItems: 'center',
43
+ display: 'flex',
44
+ height: '100vh',
45
+ justifyContent: 'center',
46
+ width: '100%'
47
+ }}
48
+ >
49
+ <div
50
+ style={{
51
+ boxShadow: '2px 2px 4px rgba(0, 0, 0, 0.2)',
52
+ height: '176px'
53
+ }}
54
+ >
55
+ <TestQueryProvider>
56
+ <Pagination
57
+ api={{ baseEndpoint: '/test/listing', queryKey: ['test'] }}
58
+ />
59
+ </TestQueryProvider>
60
+ </div>
61
+ </div>
62
+ );
63
+ };
64
+
65
+ // The six items of the page, in order.
66
+ const expectItems = async (): Promise<void> => {
67
+ expect(await screen.findByText('Item Item Item 0')).toBeVisible();
68
+
69
+ expect(
70
+ screen.getAllByText(/^Item Item Item \d$/).map((item) => item.textContent)
71
+ ).toEqual(generateItems(itemsPerPage).map(({ name }) => name));
72
+ };
73
+
74
+ const getRequestedPage = (url: URL): number =>
75
+ Number(url.searchParams.get('page'));
76
+
77
+ describe('Pagination Component', () => {
78
+ beforeEach(() => {
79
+ expect.hasAssertions();
80
+ });
81
+
82
+ it('render with correct initial state', async () => {
83
+ initialize({});
84
+ const { request } = await waitForRequest('@list');
85
+
86
+ expect(await screen.findByTestId(labelPreviousPage)).toBeDisabled();
87
+
88
+ expect(screen.getByTestId(labelNextPage)).toBeEnabled();
89
+
90
+ expect(await screen.findByText(`Page 1/${totalPages}`)).toBeVisible();
91
+
92
+ expect(getRequestedPage(request.url)).toBe(1);
93
+ await expectItems();
94
+ });
95
+
96
+ it('hides pagination controls when only one page exists', async () => {
97
+ initialize({ total: itemsPerPage });
98
+ await waitForRequest('@list');
99
+ // The items first, so the controls are checked once the answer is
100
+ // applied (before, the page shows no controls either). The shared query
101
+ // client may first show the page a previous test left in its cache.
102
+ await expectItems();
103
+
104
+ await waitFor(() => {
105
+ expect(screen.queryByTestId(labelPreviousPage)).not.toBeInTheDocument();
106
+ });
107
+ expect(screen.queryByTestId(labelNextPage)).not.toBeInTheDocument();
108
+ expect(screen.queryByText(/Page \d+\/\d+/)).not.toBeInTheDocument();
109
+ });
110
+
111
+ it('navigates forward through pages correctly', async () => {
112
+ initialize({});
113
+ await waitForRequest('@list');
114
+
115
+ expect(await screen.findByText(`Page 1/${totalPages}`)).toBeVisible();
116
+
117
+ for (let index = 0; index < totalPages - 1; index += 1) {
118
+ await userEvent.click(screen.getByTestId(labelNextPage));
119
+ const { request } = await waitForRequest('@list');
120
+
121
+ expect(
122
+ await screen.findByText(`Page ${index + 2}/${totalPages}`)
123
+ ).toBeVisible();
124
+ expect(getRequestedPage(request.url)).toBe(index + 2);
125
+ }
126
+
127
+ await waitFor(() => {
128
+ expect(screen.getByTestId(labelNextPage)).toBeDisabled();
129
+ });
130
+
131
+ expect(screen.getByTestId(labelPreviousPage)).toBeEnabled();
132
+ await expectItems();
133
+ });
134
+
135
+ it('navigates backward through pages correctly', async () => {
136
+ initialize({});
137
+
138
+ await waitForRequest('@list');
139
+
140
+ for (let index = 0; index < totalPages - 1; index += 1) {
141
+ await screen.findByText(`Page ${index + 1}/${totalPages}`);
142
+ await userEvent.click(screen.getByTestId(labelNextPage));
143
+
144
+ await waitForRequest('@list');
145
+ }
146
+
147
+ await screen.findByText(`Page ${totalPages}/${totalPages}`);
148
+
149
+ for (let index = 0; index < totalPages - 1; index += 1) {
150
+ await userEvent.click(screen.getByTestId(labelPreviousPage));
151
+ const { request } = await waitForRequest('@list');
152
+
153
+ expect(
154
+ await screen.findByText(`Page ${totalPages - index - 1}/${totalPages}`)
155
+ ).toBeVisible();
156
+ expect(getRequestedPage(request.url)).toBe(totalPages - index - 1);
157
+ }
158
+
159
+ await waitFor(() => {
160
+ expect(screen.getByTestId(labelPreviousPage)).toBeDisabled();
161
+ });
162
+
163
+ expect(screen.getByTestId(labelNextPage)).toBeEnabled();
164
+ await expectItems();
165
+ });
166
+
167
+ it('enables both buttons when on middle page', async () => {
168
+ initialize({});
169
+
170
+ await waitForRequest('@list');
171
+
172
+ await userEvent.click(await screen.findByTestId(labelNextPage));
173
+
174
+ await waitForRequest('@list');
175
+
176
+ await waitFor(() => {
177
+ expect(screen.getByTestId(labelPreviousPage)).toBeEnabled();
178
+ });
179
+ expect(screen.getByTestId(labelNextPage)).toBeEnabled();
180
+
181
+ expect(await screen.findByText(`Page 2/${totalPages}`)).toBeVisible();
182
+ await expectItems();
183
+ });
184
+ });
@@ -3,7 +3,7 @@ import { fireEvent, render } from "../../../test/testRenderer";
3
3
  import SectionPanel from ".";
4
4
 
5
5
  describe(SectionPanel, () => {
6
- it("displays given Header and sections", async () => {
6
+ it("displays given Header and sections", () => {
7
7
  const header = <>Header</>;
8
8
  const sections = [
9
9
  {