@griddo/ax 1.72.1 → 1.72.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/package.json +2 -2
- package/src/__tests__/components/ErrorToast/ErrorToast.test.tsx +56 -0
- package/src/__tests__/components/Pagination/Pagination.test.tsx +243 -0
- package/src/__tests__/components/Tabs/Tabs.test.tsx +8 -5
- package/src/components/ErrorToast/index.tsx +2 -2
- package/src/components/Pagination/index.tsx +4 -4
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@griddo/ax",
|
|
3
3
|
"description": "Griddo Author Experience",
|
|
4
|
-
"version": "1.72.
|
|
4
|
+
"version": "1.72.2",
|
|
5
5
|
"authors": [
|
|
6
6
|
"Álvaro Sánchez' <alvaro.sanches@secuoyas.com>",
|
|
7
7
|
"Carlos Torres <carlos.torres@secuoyas.com>",
|
|
@@ -226,5 +226,5 @@
|
|
|
226
226
|
"publishConfig": {
|
|
227
227
|
"access": "public"
|
|
228
228
|
},
|
|
229
|
-
"gitHead": "
|
|
229
|
+
"gitHead": "13b8c276e0c121ce023d23ca45f25e91f1bc0adc"
|
|
230
230
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import { ThemeProvider } from "styled-components";
|
|
4
|
+
import { render, cleanup, screen } from "@testing-library/react";
|
|
5
|
+
import { parseTheme } from "@ax/helpers";
|
|
6
|
+
import "@testing-library/jest-dom";
|
|
7
|
+
|
|
8
|
+
import ErrorToast, { IProps } from "@ax/components/ErrorToast";
|
|
9
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
10
|
+
|
|
11
|
+
afterEach(cleanup);
|
|
12
|
+
|
|
13
|
+
describe("ErrorToast component rendering", () => {
|
|
14
|
+
it("should render the component", () => {
|
|
15
|
+
const defaultProps: IProps = {
|
|
16
|
+
size: "m",
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
render(
|
|
20
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
21
|
+
<ErrorToast {...defaultProps} />
|
|
22
|
+
</ThemeProvider>
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
const errorWrapper = screen.getByTestId("error-wrapper");
|
|
26
|
+
expect(errorWrapper).toBeTruthy();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("should render the component with no size", () => {
|
|
30
|
+
render(
|
|
31
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
32
|
+
<ErrorToast />
|
|
33
|
+
</ThemeProvider>
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const errorWrapper = screen.getByTestId("error-wrapper");
|
|
37
|
+
expect(errorWrapper).toBeTruthy();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("should render the component with a wrong size value", () => {
|
|
41
|
+
const defaultProps: IProps = {
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
size: 100,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
render(
|
|
48
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
49
|
+
<ErrorToast {...defaultProps} />
|
|
50
|
+
</ThemeProvider>
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
const errorWrapper = screen.getByTestId("error-wrapper");
|
|
54
|
+
expect(errorWrapper).toBeTruthy();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
import "jest-styled-components";
|
|
4
|
+
import { ThemeProvider } from "styled-components";
|
|
5
|
+
import { mock } from "jest-mock-extended";
|
|
6
|
+
|
|
7
|
+
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
8
|
+
|
|
9
|
+
import { parseTheme } from "@ax/helpers";
|
|
10
|
+
import globalTheme from "@ax/themes/theme.json";
|
|
11
|
+
import Pagination, { IPaginationProps } from "@ax/components/Pagination";
|
|
12
|
+
|
|
13
|
+
afterEach(cleanup);
|
|
14
|
+
|
|
15
|
+
const defaultProps = mock<IPaginationProps>();
|
|
16
|
+
|
|
17
|
+
describe("Pagination component rendering", () => {
|
|
18
|
+
it("should render pagination component", () => {
|
|
19
|
+
const setPageMock = jest.fn();
|
|
20
|
+
defaultProps.currPage = 1;
|
|
21
|
+
defaultProps.itemsPerPage = 10;
|
|
22
|
+
defaultProps.setPage = setPageMock;
|
|
23
|
+
defaultProps.totalItems = 14;
|
|
24
|
+
|
|
25
|
+
render(
|
|
26
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
27
|
+
<Pagination {...defaultProps} />
|
|
28
|
+
</ThemeProvider>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const paginationWrapper = screen.getByTestId("pagination-wrapper");
|
|
32
|
+
expect(paginationWrapper).toBeTruthy();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("should render pagination label when size equals 'S'", () => {
|
|
36
|
+
const setPageMock = jest.fn();
|
|
37
|
+
defaultProps.currPage = 1;
|
|
38
|
+
defaultProps.itemsPerPage = 10;
|
|
39
|
+
defaultProps.setPage = setPageMock;
|
|
40
|
+
defaultProps.totalItems = 14;
|
|
41
|
+
defaultProps.size = "S";
|
|
42
|
+
|
|
43
|
+
render(
|
|
44
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
45
|
+
<Pagination {...defaultProps} />
|
|
46
|
+
</ThemeProvider>
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const paginationLabel = screen.getByTestId("pagination-label");
|
|
50
|
+
expect(paginationLabel.textContent).toEqual("Page 1 of 2");
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("should render pagination text input when size is undefined", () => {
|
|
54
|
+
const setPageMock = jest.fn();
|
|
55
|
+
defaultProps.currPage = 1;
|
|
56
|
+
defaultProps.itemsPerPage = 10;
|
|
57
|
+
defaultProps.setPage = setPageMock;
|
|
58
|
+
defaultProps.totalItems = 14;
|
|
59
|
+
defaultProps.size = undefined;
|
|
60
|
+
|
|
61
|
+
render(
|
|
62
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
63
|
+
<Pagination {...defaultProps} />
|
|
64
|
+
</ThemeProvider>
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const paginationTextInput = screen.getByTestId("pagination-text-input");
|
|
68
|
+
expect(paginationTextInput).toBeTruthy();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("should render arrow left disabled when it's first page", () => {
|
|
72
|
+
const setPageMock = jest.fn();
|
|
73
|
+
defaultProps.currPage = 1;
|
|
74
|
+
defaultProps.itemsPerPage = 10;
|
|
75
|
+
defaultProps.setPage = setPageMock;
|
|
76
|
+
defaultProps.totalItems = 14;
|
|
77
|
+
defaultProps.size = "S";
|
|
78
|
+
|
|
79
|
+
render(
|
|
80
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
81
|
+
<Pagination {...defaultProps} />
|
|
82
|
+
</ThemeProvider>
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
86
|
+
expect(iconActionComponents.length).toEqual(2);
|
|
87
|
+
|
|
88
|
+
expect(iconActionComponents[0]).toHaveStyleRule("pointer-events", "none");
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("should render arrow right disabled when it's last page", () => {
|
|
92
|
+
const setPageMock = jest.fn();
|
|
93
|
+
defaultProps.currPage = 2;
|
|
94
|
+
defaultProps.itemsPerPage = 10;
|
|
95
|
+
defaultProps.setPage = setPageMock;
|
|
96
|
+
defaultProps.totalItems = 14;
|
|
97
|
+
defaultProps.size = "S";
|
|
98
|
+
|
|
99
|
+
render(
|
|
100
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
101
|
+
<Pagination {...defaultProps} />
|
|
102
|
+
</ThemeProvider>
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
106
|
+
|
|
107
|
+
expect(iconActionComponents[0]).toHaveStyleRule("pointer-events", "auto");
|
|
108
|
+
expect(iconActionComponents[1]).toHaveStyleRule("pointer-events", "none");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
describe("Pagination component events", () => {
|
|
113
|
+
it("should call setPage when click next page button", () => {
|
|
114
|
+
const setPageMock = jest.fn();
|
|
115
|
+
defaultProps.currPage = 1;
|
|
116
|
+
defaultProps.itemsPerPage = 10;
|
|
117
|
+
defaultProps.setPage = setPageMock;
|
|
118
|
+
defaultProps.totalItems = 14;
|
|
119
|
+
defaultProps.size = "S";
|
|
120
|
+
|
|
121
|
+
render(
|
|
122
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
123
|
+
<Pagination {...defaultProps} />
|
|
124
|
+
</ThemeProvider>
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
128
|
+
fireEvent.click(iconActionComponents[1]);
|
|
129
|
+
expect(setPageMock).toBeCalled();
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("should call setPage when click next page button", () => {
|
|
133
|
+
const setPageMock = jest.fn();
|
|
134
|
+
defaultProps.currPage = 1;
|
|
135
|
+
defaultProps.itemsPerPage = 10;
|
|
136
|
+
defaultProps.setPage = setPageMock;
|
|
137
|
+
defaultProps.totalItems = 14;
|
|
138
|
+
defaultProps.size = "S";
|
|
139
|
+
|
|
140
|
+
render(
|
|
141
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
142
|
+
<Pagination {...defaultProps} />
|
|
143
|
+
</ThemeProvider>
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
147
|
+
fireEvent.click(iconActionComponents[1]);
|
|
148
|
+
expect(setPageMock).toBeCalled();
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it("should call setPage when click prev page button", () => {
|
|
152
|
+
const setPageMock = jest.fn();
|
|
153
|
+
defaultProps.currPage = 2;
|
|
154
|
+
defaultProps.itemsPerPage = 10;
|
|
155
|
+
defaultProps.setPage = setPageMock;
|
|
156
|
+
defaultProps.totalItems = 14;
|
|
157
|
+
defaultProps.size = "S";
|
|
158
|
+
|
|
159
|
+
render(
|
|
160
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
161
|
+
<Pagination {...defaultProps} />
|
|
162
|
+
</ThemeProvider>
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
166
|
+
fireEvent.click(iconActionComponents[0]);
|
|
167
|
+
expect(setPageMock).toBeCalled();
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it("should call setPage when change input value", () => {
|
|
171
|
+
const setPageMock = jest.fn();
|
|
172
|
+
defaultProps.currPage = 1;
|
|
173
|
+
defaultProps.itemsPerPage = 10;
|
|
174
|
+
defaultProps.setPage = setPageMock;
|
|
175
|
+
defaultProps.totalItems = 14;
|
|
176
|
+
defaultProps.size = undefined;
|
|
177
|
+
|
|
178
|
+
render(
|
|
179
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
180
|
+
<Pagination {...defaultProps} />
|
|
181
|
+
</ThemeProvider>
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
const paginationTextInput = screen.getByTestId("pagination-text-input");
|
|
185
|
+
fireEvent.change(paginationTextInput, { target: { value: 2 } });
|
|
186
|
+
expect(setPageMock).toBeCalled();
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("should call setPage with 0 when change input value is not a number", () => {
|
|
190
|
+
const setPageMock = jest.fn();
|
|
191
|
+
defaultProps.currPage = 1;
|
|
192
|
+
defaultProps.itemsPerPage = 10;
|
|
193
|
+
defaultProps.setPage = setPageMock;
|
|
194
|
+
defaultProps.totalItems = 14;
|
|
195
|
+
defaultProps.size = undefined;
|
|
196
|
+
|
|
197
|
+
render(
|
|
198
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
199
|
+
<Pagination {...defaultProps} />
|
|
200
|
+
</ThemeProvider>
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
const paginationTextInput = screen.getByTestId("pagination-text-input");
|
|
204
|
+
fireEvent.change(paginationTextInput, { target: { value: "A" } });
|
|
205
|
+
expect(setPageMock).toBeCalledWith(0);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
it("shouldn't call setPage when current page is lower than or equal to 1", () => {
|
|
209
|
+
const setPageMock = jest.fn();
|
|
210
|
+
defaultProps.currPage = 1;
|
|
211
|
+
defaultProps.itemsPerPage = 10;
|
|
212
|
+
defaultProps.setPage = setPageMock;
|
|
213
|
+
defaultProps.totalItems = 14;
|
|
214
|
+
defaultProps.size = undefined;
|
|
215
|
+
|
|
216
|
+
render(
|
|
217
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
218
|
+
<Pagination {...defaultProps} />
|
|
219
|
+
</ThemeProvider>
|
|
220
|
+
);
|
|
221
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
222
|
+
fireEvent.click(iconActionComponents[0]);
|
|
223
|
+
expect(setPageMock).not.toHaveBeenCalled();
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it("shouldn't call setPage when current page is greater than or equal to last page", () => {
|
|
227
|
+
const setPageMock = jest.fn();
|
|
228
|
+
defaultProps.currPage = 2;
|
|
229
|
+
defaultProps.itemsPerPage = 10;
|
|
230
|
+
defaultProps.setPage = setPageMock;
|
|
231
|
+
defaultProps.totalItems = 14;
|
|
232
|
+
defaultProps.size = undefined;
|
|
233
|
+
|
|
234
|
+
render(
|
|
235
|
+
<ThemeProvider theme={parseTheme(globalTheme)}>
|
|
236
|
+
<Pagination {...defaultProps} />
|
|
237
|
+
</ThemeProvider>
|
|
238
|
+
);
|
|
239
|
+
const iconActionComponents = screen.getAllByTestId("icon-action-component");
|
|
240
|
+
fireEvent.click(iconActionComponents[1]);
|
|
241
|
+
expect(setPageMock).not.toHaveBeenCalled();
|
|
242
|
+
});
|
|
243
|
+
});
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
import "jest-styled-components";
|
|
3
4
|
import { ThemeProvider } from "styled-components";
|
|
5
|
+
import { mock } from "jest-mock-extended";
|
|
6
|
+
|
|
7
|
+
import { render, screen, cleanup, fireEvent } from "@testing-library/react";
|
|
8
|
+
|
|
4
9
|
import { parseTheme } from "@ax/helpers";
|
|
5
10
|
import globalTheme from "@ax/themes/theme.json";
|
|
6
|
-
import
|
|
7
|
-
import { mock } from "jest-mock-extended";
|
|
8
|
-
import "jest-styled-components";
|
|
11
|
+
import Tabs, { ITabsProps } from "@ax/components/Tabs";
|
|
9
12
|
|
|
10
13
|
afterEach(cleanup);
|
|
11
14
|
|
|
@@ -202,4 +205,4 @@ describe("Tabs component events", () => {
|
|
|
202
205
|
expect(tabs[0]).toHaveStyleRule("cursor", "initial");
|
|
203
206
|
expect(tabs[1]).toHaveStyleRule("cursor", "pointer");
|
|
204
207
|
});
|
|
205
|
-
});
|
|
208
|
+
});
|
|
@@ -5,11 +5,11 @@ import * as S from "./style";
|
|
|
5
5
|
const ErrorToast = (props: IProps) => {
|
|
6
6
|
const { size } = props;
|
|
7
7
|
return (
|
|
8
|
-
<S.ErrorWrapper id="error" size={size}/>
|
|
8
|
+
<S.ErrorWrapper id="error" data-testid="error-wrapper" size={size}/>
|
|
9
9
|
);
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
interface IProps {
|
|
12
|
+
export interface IProps {
|
|
13
13
|
size?: string;
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -4,7 +4,7 @@ import { IconAction } from "@ax/components";
|
|
|
4
4
|
|
|
5
5
|
import * as S from "./style";
|
|
6
6
|
|
|
7
|
-
const Pagination = (props:
|
|
7
|
+
const Pagination = (props: IPaginationProps) => {
|
|
8
8
|
const { itemsPerPage, totalItems, setPage, currPage, size } = props;
|
|
9
9
|
|
|
10
10
|
const lastPage = Math.ceil(totalItems / itemsPerPage);
|
|
@@ -33,11 +33,11 @@ const Pagination = (props: IProps) => {
|
|
|
33
33
|
setPage(nextPage);
|
|
34
34
|
};
|
|
35
35
|
|
|
36
|
-
const CurrentPage = size === "S" ? currPage : <S.Input type="text" value={currPage} onChange={_handleChange} />;
|
|
36
|
+
const CurrentPage = size === "S" ? currPage : <S.Input data-testid="pagination-text-input" type="text" value={currPage} onChange={_handleChange} />;
|
|
37
37
|
|
|
38
38
|
return (
|
|
39
39
|
<S.Wrapper data-testid="pagination-wrapper">
|
|
40
|
-
<S.Literal size={size}>
|
|
40
|
+
<S.Literal size={size} data-testid="pagination-label">
|
|
41
41
|
Page {CurrentPage} of {lastPage}
|
|
42
42
|
</S.Literal>
|
|
43
43
|
<IconAction icon="left-arrow" onClick={handlePrev} disabled={isFirstPage} />
|
|
@@ -46,7 +46,7 @@ const Pagination = (props: IProps) => {
|
|
|
46
46
|
);
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
interface
|
|
49
|
+
export interface IPaginationProps {
|
|
50
50
|
setPage?: any;
|
|
51
51
|
itemsPerPage: number;
|
|
52
52
|
totalItems: number;
|