@pautena/react-design-system 0.2.1 → 0.3.0
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/cjs/index.js +13 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/value-displays/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/value-datetime/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/value-datetime/value-datetime.d.ts +18 -0
- package/dist/cjs/types/generators/generators.mock.d.ts +9 -5
- package/dist/cjs/types/generators/generators.model.d.ts +25 -1
- package/dist/esm/index.js +13 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/value-displays/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/value-datetime/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/value-datetime/value-datetime.d.ts +18 -0
- package/dist/esm/types/generators/generators.mock.d.ts +9 -5
- package/dist/esm/types/generators/generators.model.d.ts +25 -1
- package/dist/index.d.ts +45 -2
- package/package.json +6 -2
- package/src/components/value-displays/index.ts +1 -0
- package/src/components/value-displays/value-datetime/index.ts +1 -0
- package/src/components/value-displays/value-datetime/value-datetime.stories.tsx +21 -0
- package/src/components/value-displays/value-datetime/value-datetime.test.tsx +23 -0
- package/src/components/value-displays/value-datetime/value-datetime.tsx +40 -0
- package/src/components/value-displays/value-text/{value-test.test.tsx → value-text.test.tsx} +0 -0
- package/src/generators/generators.mock.ts +56 -17
- package/src/generators/generators.model.ts +39 -1
- package/src/generators/model-form/model-form.stories.tsx +2 -2
- package/src/generators/model-form/model-form.test.tsx +39 -22
- package/src/generators/model-form/model-form.tsx +220 -33
- package/src/generators/model-router/model-router.test.tsx +46 -52
- package/src/generators/model-router/stories/model-router.stories.tsx +6 -2
- package/src/generators/object-details/object-details.tsx +5 -4
- package/src/storybook.tsx +10 -0
- package/src/tests/actions.ts +43 -0
- package/src/tests/assertions.ts +70 -1
- package/src/tests/index.ts +1 -0
- package/src/tests/testing-library.tsx +5 -1
package/src/tests/assertions.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AlertColor } from "@mui/material";
|
|
2
2
|
import { ModelField } from "../generators";
|
|
3
3
|
import { screen, waitForElementToBeRemoved } from "./testing-library";
|
|
4
|
+
import { format } from "date-fns";
|
|
5
|
+
import { MockInstance } from "../generators/generators.mock";
|
|
4
6
|
|
|
5
7
|
export const expectContentPlaceholder = async () => {
|
|
6
8
|
expect(await screen.findByTestId(/content-placeholder-test/i)).toBeInTheDocument();
|
|
@@ -12,6 +14,12 @@ export const expectModelFieldInputExist = (fields: ModelField[]) => {
|
|
|
12
14
|
expectModelFieldInputExist(field.value);
|
|
13
15
|
} else if (field.type === "number") {
|
|
14
16
|
expect(screen.getByRole("spinbutton", { name: field.name })).toBeInTheDocument();
|
|
17
|
+
} else if (field.type === "boolean") {
|
|
18
|
+
expect(screen.getByRole("checkbox", { name: field.name })).toBeInTheDocument();
|
|
19
|
+
} else if (field.type === "enum" || field.type === "multienum") {
|
|
20
|
+
expect(
|
|
21
|
+
screen.getByRole("button", { name: new RegExp(field.name.toLowerCase(), "i") }),
|
|
22
|
+
).toBeInTheDocument();
|
|
15
23
|
} else {
|
|
16
24
|
expect(screen.getByRole("textbox", { name: field.name })).toBeInTheDocument();
|
|
17
25
|
}
|
|
@@ -25,6 +33,16 @@ export const expectModelFieldInputValue = (fields: ModelField[], initialValues:
|
|
|
25
33
|
expectModelFieldInputValue(field.value, value);
|
|
26
34
|
} else if (field.type === "number") {
|
|
27
35
|
expect(screen.getByDisplayValue(value.toString())).toBeInTheDocument();
|
|
36
|
+
} else if (field.type === "boolean") {
|
|
37
|
+
expect(
|
|
38
|
+
screen.getByRole("checkbox", { name: field.name, checked: value }),
|
|
39
|
+
).toBeInTheDocument();
|
|
40
|
+
} else if (field.type === "date" || field.type === "time" || field.type === "datetime") {
|
|
41
|
+
const expectedDateValue = format(value, field.format);
|
|
42
|
+
expect(screen.getByRole("textbox", { name: field.name })).toHaveAttribute(
|
|
43
|
+
"value",
|
|
44
|
+
expectedDateValue,
|
|
45
|
+
);
|
|
28
46
|
} else {
|
|
29
47
|
expect(screen.getByDisplayValue(value.toString())).toBeInTheDocument();
|
|
30
48
|
}
|
|
@@ -45,9 +63,11 @@ export const expectModelFieldValue = (field: ModelField, instance: object) => {
|
|
|
45
63
|
expect(screen.getByRole("label", { name: name })).toBeInTheDocument();
|
|
46
64
|
if (type === "boolean") {
|
|
47
65
|
expect(screen.getByTestId(value ? "CheckIcon" : "CloseIcon")).toBeInTheDocument();
|
|
66
|
+
} else if (type === "date" || type === "time" || type === "datetime") {
|
|
67
|
+
const formatedValue = format(value, field.format);
|
|
68
|
+
expect(screen.getByLabelText(name)).toHaveTextContent(formatedValue);
|
|
48
69
|
} else {
|
|
49
70
|
expect(screen.getByLabelText(name)).toHaveTextContent(value);
|
|
50
|
-
//expect(screen.getByText(value)).toBeInTheDocument();
|
|
51
71
|
}
|
|
52
72
|
};
|
|
53
73
|
|
|
@@ -74,3 +94,52 @@ export const expectAlert = async ({
|
|
|
74
94
|
title && expect(await screen.findByText(title)).toBeInTheDocument();
|
|
75
95
|
expect(await screen.findByText(message)).toBeInTheDocument();
|
|
76
96
|
};
|
|
97
|
+
|
|
98
|
+
export const expectToHaveBeenCalledOnceWithMockInstance = (
|
|
99
|
+
mockFn: jest.Mock,
|
|
100
|
+
instance: MockInstance,
|
|
101
|
+
) => {
|
|
102
|
+
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
103
|
+
|
|
104
|
+
const calledReturnTime: Date = mockFn.mock.calls[0][0].car.returnTime;
|
|
105
|
+
const calledTradeDate: Date = mockFn.mock.calls[0][0].tradeDate;
|
|
106
|
+
|
|
107
|
+
expect(mockFn).toHaveBeenCalledWith({
|
|
108
|
+
id: instance.id,
|
|
109
|
+
firstName: instance.firstName,
|
|
110
|
+
middleName: instance.middleName,
|
|
111
|
+
lastName: instance.lastName,
|
|
112
|
+
gender: instance.gender,
|
|
113
|
+
age: instance.age,
|
|
114
|
+
birthDate: instance.birthDate,
|
|
115
|
+
car: {
|
|
116
|
+
model: instance.car.model,
|
|
117
|
+
manufacturer: instance.car.manufacturer,
|
|
118
|
+
color: instance.car.color,
|
|
119
|
+
type: instance.car.type,
|
|
120
|
+
vin: instance.car.vin,
|
|
121
|
+
vrm: instance.car.vrm,
|
|
122
|
+
returnTime: new Date(
|
|
123
|
+
calledReturnTime.getFullYear(),
|
|
124
|
+
calledReturnTime.getMonth(),
|
|
125
|
+
calledReturnTime.getDate(),
|
|
126
|
+
instance.car.returnTime.getHours(),
|
|
127
|
+
instance.car.returnTime.getMinutes(),
|
|
128
|
+
calledReturnTime.getSeconds(),
|
|
129
|
+
calledReturnTime.getMilliseconds(),
|
|
130
|
+
),
|
|
131
|
+
},
|
|
132
|
+
quantity: instance.quantity,
|
|
133
|
+
available: instance.available,
|
|
134
|
+
currency: instance.currency,
|
|
135
|
+
tradeDate: new Date(
|
|
136
|
+
instance.tradeDate.getFullYear(),
|
|
137
|
+
instance.tradeDate.getMonth(),
|
|
138
|
+
instance.tradeDate.getDate(),
|
|
139
|
+
instance.tradeDate.getHours(),
|
|
140
|
+
instance.tradeDate.getMinutes(),
|
|
141
|
+
calledTradeDate.getSeconds(),
|
|
142
|
+
calledTradeDate.getMilliseconds(),
|
|
143
|
+
),
|
|
144
|
+
});
|
|
145
|
+
};
|
package/src/tests/index.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { createMemoryHistory, MemoryHistory } from "history";
|
|
|
4
4
|
import React from "react";
|
|
5
5
|
import { ThemeProvider } from "@emotion/react";
|
|
6
6
|
import { Theme, createTheme, PaletteMode } from "@mui/material";
|
|
7
|
+
import { LocalizationProvider } from "@mui/x-date-pickers";
|
|
8
|
+
import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
|
|
7
9
|
|
|
8
10
|
export type TestRouter = "router" | "memory";
|
|
9
11
|
|
|
@@ -34,7 +36,9 @@ const createWrapper =
|
|
|
34
36
|
};
|
|
35
37
|
return (
|
|
36
38
|
<ThemeProvider theme={theme}>
|
|
37
|
-
<
|
|
39
|
+
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
|
40
|
+
<R {...routerArgs}>{children}</R>
|
|
41
|
+
</LocalizationProvider>
|
|
38
42
|
</ThemeProvider>
|
|
39
43
|
);
|
|
40
44
|
};
|