@griddo/ax 10.1.96 → 10.2.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.
Files changed (201) hide show
  1. package/package.json +3 -2
  2. package/src/__mocks__/axios/Roles.ts +10 -0
  3. package/src/__mocks__/axios/UserList.ts +545 -0
  4. package/src/__mocks__/store/GenericStore.ts +25 -0
  5. package/src/__mocks__/store/Roles.ts +1050 -0
  6. package/src/__mocks__/store/SitesList.ts +7 -1
  7. package/src/__mocks__/store/UserList.ts +482 -0
  8. package/src/__mocks__/store/UsersCreate.ts +298 -0
  9. package/src/__tests__/components/Avatar/Avatar.test.tsx +49 -48
  10. package/src/__tests__/components/ConfigPanel/ConfigPanel.test.tsx +2 -0
  11. package/src/__tests__/components/ConfigPanel/Form/Form.test.tsx +2 -0
  12. package/src/__tests__/components/ConfigPanel/GlobalPageForm/GlobalPageForm.test.tsx +25 -0
  13. package/src/__tests__/components/Fields/Button/Button.test.tsx +2 -2
  14. package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +2 -0
  15. package/src/__tests__/components/Fields/IntegrationsField/IntegrationsField.test.tsx +44 -2
  16. package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +0 -1
  17. package/src/__tests__/components/Gallery/Gallery.test.tsx +4 -0
  18. package/src/__tests__/components/Gallery/GalleryPanel/DetailPanel/DetailPanel.test.tsx +14 -0
  19. package/src/__tests__/components/Gallery/GalleryPanel/GalleryPanel.test.tsx +2 -1
  20. package/src/__tests__/components/Lists/Lists.test.tsx +3 -3
  21. package/src/__tests__/components/Login/Login.test.tsx +1 -1
  22. package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +1 -1
  23. package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +1 -1
  24. package/src/__tests__/components/TableFilters/RoleFilter/RoleFilter.test.tsx +165 -0
  25. package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +2 -2
  26. package/src/__tests__/components/TableFilters/UsersFilter/UsersFilter.test.tsx +153 -0
  27. package/src/__tests__/components/Tabs/Tabs.test.tsx +1 -1
  28. package/src/__tests__/modules/Settings/Integrations/Integrations.test.tsx +6 -0
  29. package/src/__tests__/modules/Sites/Sites.test.tsx +2 -1
  30. package/src/__tests__/modules/Sites/SitesList/ListView/BulkHeader/BulkHeader.test.tsx +14 -5
  31. package/src/__tests__/modules/Sites/SitesList/SitesList.test.tsx +6 -4
  32. package/src/__tests__/modules/Users/Roles/BulkHeader/BulkHeader.test.tsx +158 -0
  33. package/src/__tests__/modules/Users/Roles/Roles.test.tsx +619 -0
  34. package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/RoleItem.test.tsx +107 -0
  35. package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RolesModal.test.tsx +159 -0
  36. package/src/__tests__/modules/Users/UserCreate/SiteItem/SiteItem.test.tsx +175 -0
  37. package/src/__tests__/modules/Users/UserCreate/UserCreate.test.tsx +320 -0
  38. package/src/__tests__/modules/Users/UserList/UserItem/UserItem.test.tsx +417 -0
  39. package/src/__tests__/modules/Users/UserList/UserList.test.tsx +310 -0
  40. package/src/api/index.tsx +2 -0
  41. package/src/api/roles.tsx +77 -0
  42. package/src/api/users.tsx +22 -2
  43. package/src/components/ActionMenu/index.tsx +12 -6
  44. package/src/components/Avatar/index.tsx +5 -3
  45. package/src/components/Avatar/style.tsx +8 -9
  46. package/src/components/BulkSelectionOptions/index.tsx +19 -12
  47. package/src/components/BulkSelectionOptions/style.tsx +6 -11
  48. package/src/components/ConfigPanel/Form/index.tsx +24 -1
  49. package/src/components/ConfigPanel/GlobalPageForm/index.tsx +17 -4
  50. package/src/components/ElementsTooltip/index.tsx +1 -1
  51. package/src/components/Fields/IntegrationsField/index.tsx +5 -6
  52. package/src/components/Fields/RadioField/index.tsx +1 -1
  53. package/src/components/Fields/ReferenceField/AutoPanel/index.tsx +3 -3
  54. package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
  55. package/src/components/Fields/ReferenceField/ManualPanel/index.tsx +3 -3
  56. package/src/components/Fields/TagsField/index.tsx +4 -2
  57. package/src/components/Fields/TextField/index.tsx +3 -0
  58. package/src/components/Fields/UrlField/index.tsx +5 -5
  59. package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +42 -15
  60. package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/index.tsx +1 -1
  61. package/src/components/Gallery/GalleryPanel/index.tsx +20 -5
  62. package/src/components/Gallery/index.tsx +12 -6
  63. package/src/components/Icon/index.tsx +9 -1
  64. package/src/components/MainWrapper/AppBar/atoms.tsx +2 -2
  65. package/src/components/MainWrapper/AppBar/index.tsx +12 -10
  66. package/src/components/MainWrapper/AppBar/style.tsx +2 -1
  67. package/src/components/Modal/style.tsx +2 -2
  68. package/src/components/Nav/index.tsx +12 -2
  69. package/src/components/PageFinder/index.tsx +2 -2
  70. package/src/components/SearchField/index.tsx +3 -8
  71. package/src/components/TableFilters/PermissionsFilter/index.tsx +50 -0
  72. package/src/{modules/Users/UserList/HeaderMenus/Name → components/TableFilters/PermissionsFilter}/style.tsx +6 -2
  73. package/src/components/TableFilters/RoleFilter/index.tsx +61 -0
  74. package/src/components/TableFilters/RoleFilter/style.tsx +28 -0
  75. package/src/components/TableFilters/UsersFilter/index.tsx +55 -0
  76. package/src/components/TableFilters/UsersFilter/style.tsx +31 -0
  77. package/src/components/TableFilters/index.tsx +6 -0
  78. package/src/components/TableList/TableItem/style.tsx +2 -2
  79. package/src/components/TableList/style.tsx +1 -1
  80. package/src/components/index.tsx +7 -1
  81. package/src/containers/App/actions.tsx +3 -3
  82. package/src/containers/PageEditor/actions.tsx +14 -20
  83. package/src/containers/Redirects/actions.tsx +1 -0
  84. package/src/containers/Sites/actions.tsx +22 -14
  85. package/src/containers/Sites/interfaces.tsx +3 -3
  86. package/src/containers/Sites/reducer.tsx +1 -1
  87. package/src/containers/StructuredData/actions.tsx +15 -3
  88. package/src/containers/Users/actions.tsx +160 -26
  89. package/src/containers/Users/constants.tsx +8 -10
  90. package/src/containers/Users/interfaces.tsx +25 -3
  91. package/src/containers/Users/reducer.tsx +24 -15
  92. package/src/guards/index.tsx +2 -1
  93. package/src/guards/restricted/index.tsx +21 -0
  94. package/src/hooks/index.tsx +3 -0
  95. package/src/hooks/users.tsx +38 -0
  96. package/src/modules/App/Routing/NavMenu/NavItem/index.tsx +10 -5
  97. package/src/modules/App/Routing/NavMenu/index.tsx +16 -7
  98. package/src/modules/App/Routing/PrivateRoute/index.tsx +13 -5
  99. package/src/modules/App/Routing/index.tsx +17 -6
  100. package/src/modules/Categories/CategoriesList/BulkHeader/TableHeader/style.tsx +1 -0
  101. package/src/modules/Categories/CategoriesList/BulkHeader/index.tsx +2 -10
  102. package/src/modules/Categories/CategoriesList/CategoryItem/index.tsx +27 -12
  103. package/src/modules/Categories/CategoriesList/CategoryItem/style.tsx +4 -2
  104. package/src/modules/Categories/CategoriesList/index.tsx +27 -8
  105. package/src/modules/Content/BulkHeader/index.tsx +7 -3
  106. package/src/modules/Content/PageImporter/index.tsx +1 -1
  107. package/src/modules/Content/PageItem/index.tsx +45 -31
  108. package/src/modules/Content/PageItem/style.tsx +2 -1
  109. package/src/modules/Content/index.tsx +22 -13
  110. package/src/modules/FramePreview/index.tsx +2 -2
  111. package/src/modules/GlobalEditor/index.tsx +68 -53
  112. package/src/modules/GlobalSettings/index.tsx +2 -0
  113. package/src/modules/Navigation/Defaults/BulkHeader/index.tsx +2 -10
  114. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +9 -11
  115. package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +5 -1
  116. package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +10 -5
  117. package/src/modules/Navigation/Defaults/Item/index.tsx +41 -27
  118. package/src/modules/Navigation/Defaults/Item/style.tsx +2 -1
  119. package/src/modules/Navigation/Defaults/index.tsx +29 -10
  120. package/src/modules/Navigation/Menus/List/Table/Header/index.tsx +7 -5
  121. package/src/modules/Navigation/Menus/List/Table/Item/index.tsx +10 -10
  122. package/src/modules/Navigation/Menus/List/Table/Item/style.tsx +2 -1
  123. package/src/modules/Navigation/Menus/List/index.tsx +6 -2
  124. package/src/modules/Navigation/Menus/index.tsx +12 -7
  125. package/src/modules/PageEditor/Editor/index.tsx +5 -1
  126. package/src/modules/PageEditor/PageBrowser/index.tsx +9 -3
  127. package/src/modules/PageEditor/index.tsx +67 -57
  128. package/src/modules/Redirects/index.tsx +97 -98
  129. package/src/modules/Settings/ContentTypes/DataPacks/AddModal/index.tsx +5 -1
  130. package/src/modules/Settings/ContentTypes/DataPacks/Config/Form/TemplateConfig/TemplateEditor/Editor/TemplateBrowser/index.tsx +8 -9
  131. package/src/modules/Settings/ContentTypes/DataPacks/Config/Form/index.tsx +7 -3
  132. package/src/modules/Settings/ContentTypes/DataPacks/Config/index.tsx +5 -1
  133. package/src/modules/Settings/ContentTypes/DataPacks/Item/index.tsx +5 -1
  134. package/src/modules/Settings/Integrations/BulkHeader/index.tsx +2 -17
  135. package/src/modules/Settings/Integrations/IntegrationForm/index.tsx +6 -2
  136. package/src/modules/Settings/Integrations/IntegrationItem/index.tsx +18 -8
  137. package/src/modules/Settings/Integrations/IntegrationItem/style.tsx +6 -3
  138. package/src/modules/Settings/Integrations/index.tsx +32 -7
  139. package/src/modules/Settings/Languages/LanguagePanel/index.tsx +6 -2
  140. package/src/modules/Settings/Languages/Table/Header/index.tsx +4 -2
  141. package/src/modules/Settings/Languages/Table/Item/index.tsx +19 -43
  142. package/src/modules/Settings/Languages/Table/Item/style.tsx +11 -54
  143. package/src/modules/Settings/Languages/index.tsx +2 -2
  144. package/src/modules/Settings/SeoAnalyticsSettings/Analytics/index.tsx +2 -4
  145. package/src/modules/Settings/SeoAnalyticsSettings/index.tsx +4 -2
  146. package/src/modules/Settings/Social/index.tsx +1 -1
  147. package/src/modules/Settings/index.tsx +17 -11
  148. package/src/modules/Sites/SitesList/GridView/GridSiteItem/index.tsx +31 -18
  149. package/src/modules/Sites/SitesList/ListView/BulkHeader/index.tsx +21 -12
  150. package/src/modules/Sites/SitesList/ListView/ListSiteItem/index.tsx +31 -18
  151. package/src/modules/Sites/SitesList/RecentSiteItem/index.tsx +1 -1
  152. package/src/modules/Sites/SitesList/index.tsx +16 -24
  153. package/src/modules/Sites/index.tsx +7 -3
  154. package/src/modules/StructuredData/Form/index.tsx +1 -1
  155. package/src/modules/StructuredData/StructuredDataList/BulkHeader/index.tsx +8 -5
  156. package/src/modules/StructuredData/StructuredDataList/ContentFilters/index.tsx +8 -5
  157. package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/index.tsx +29 -15
  158. package/src/modules/StructuredData/StructuredDataList/StructuredDataItem/index.tsx +50 -19
  159. package/src/modules/StructuredData/StructuredDataList/index.tsx +9 -6
  160. package/src/modules/Users/Profile/index.tsx +16 -4
  161. package/src/modules/Users/Roles/BulkHeader/TableHeader/index.tsx +52 -0
  162. package/src/modules/Users/Roles/BulkHeader/TableHeader/style.tsx +43 -0
  163. package/src/modules/Users/Roles/BulkHeader/index.tsx +74 -0
  164. package/src/modules/Users/Roles/RoleItem/index.tsx +104 -0
  165. package/src/modules/Users/Roles/RoleItem/style.tsx +127 -0
  166. package/src/modules/Users/Roles/SideModal/index.tsx +81 -0
  167. package/src/modules/Users/Roles/SideModal/style.tsx +132 -0
  168. package/src/modules/Users/Roles/hooks.tsx +78 -0
  169. package/src/modules/Users/Roles/index.tsx +256 -0
  170. package/src/modules/Users/Roles/style.tsx +23 -0
  171. package/src/modules/Users/Roles/utils.tsx +12 -0
  172. package/src/modules/Users/UserCreate/OptionItem/index.tsx +45 -0
  173. package/src/modules/Users/UserCreate/OptionItem/style.tsx +48 -0
  174. package/src/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/index.tsx +48 -0
  175. package/src/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/style.tsx +42 -0
  176. package/src/modules/Users/UserCreate/SiteItem/RolesModal/index.tsx +140 -0
  177. package/src/modules/Users/UserCreate/SiteItem/RolesModal/style.tsx +94 -0
  178. package/src/modules/Users/UserCreate/SiteItem/index.tsx +103 -22
  179. package/src/modules/Users/UserCreate/SiteItem/style.tsx +49 -6
  180. package/src/modules/Users/UserCreate/index.tsx +278 -121
  181. package/src/modules/Users/UserCreate/style.tsx +71 -4
  182. package/src/modules/Users/UserEdit/index.tsx +71 -24
  183. package/src/modules/Users/UserForm/atoms.tsx +40 -8
  184. package/src/modules/Users/UserForm/index.tsx +335 -116
  185. package/src/modules/Users/UserForm/style.tsx +70 -6
  186. package/src/modules/Users/UserList/BulkHeader/TableHeader/index.tsx +61 -31
  187. package/src/modules/Users/UserList/BulkHeader/TableHeader/style.tsx +18 -4
  188. package/src/modules/Users/UserList/BulkHeader/index.tsx +10 -3
  189. package/src/modules/Users/UserList/UserItem/index.tsx +121 -38
  190. package/src/modules/Users/UserList/UserItem/style.tsx +32 -14
  191. package/src/modules/Users/UserList/hooks.tsx +13 -8
  192. package/src/modules/Users/UserList/index.tsx +67 -29
  193. package/src/modules/Users/UserList/utils.tsx +1 -1
  194. package/src/modules/Users/index.tsx +20 -3
  195. package/src/routes/index.tsx +9 -17
  196. package/src/routes/multisite.tsx +73 -8
  197. package/src/routes/site.tsx +96 -10
  198. package/src/types/index.tsx +42 -1
  199. package/tsconfig.paths.json +1 -0
  200. package/src/__tests__/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -61
  201. package/src/modules/Users/UserList/HeaderMenus/Name/index.tsx +0 -55
@@ -0,0 +1,417 @@
1
+ import React from "react";
2
+ import axios from "axios";
3
+ import { ThemeProvider } from "styled-components";
4
+ import configureStore from "redux-mock-store";
5
+ import thunk from "redux-thunk";
6
+ import { Router } from "react-router-dom";
7
+ import "@testing-library/jest-dom";
8
+ import { render, cleanup, screen, act, waitFor } from "./../../../../../../config/jest/test-utils";
9
+ import userEvent from "@testing-library/user-event";
10
+ import { createMemoryHistory } from "history";
11
+ import MockAdapter from "axios-mock-adapter";
12
+ import { Middleware } from "redux";
13
+
14
+ import { parseTheme } from "@ax/helpers";
15
+ import globalTheme from "@ax/themes/theme.json";
16
+ import UserItem, { IUserItemProps } from "./../../../../../modules/Users/UserList/UserItem";
17
+
18
+ import { appStoreMock, sitesStoreGlobalMock, usersSiteStoreMock, usersStoreMock } from "../../../../../__mocks__/store/UserList";
19
+ import { defaultStore } from "./../../../../../__mocks__/store/GenericStore";
20
+
21
+ const middlewares: Middleware[] = [thunk];
22
+ const mockStore = configureStore(middlewares);
23
+
24
+ const user = userEvent.setup();
25
+
26
+ const history = createMemoryHistory();
27
+
28
+ let mockedAxios: MockAdapter;
29
+
30
+ const onChangeMock = jest.fn();
31
+ const onClickMock = jest.fn();
32
+ const updateUserMock = jest.fn();
33
+ const deleteUserMock = jest.fn();
34
+ const resendInvitationMock = jest.fn();
35
+ const toggleDeleteToastMock = jest.fn();
36
+ const defaultProps: IUserItemProps = {
37
+ user: {
38
+ id: 171,
39
+ username: "pruebauser",
40
+ name: "Prueba Prueba",
41
+ email: "prueba@secuoyas.com",
42
+ image: {
43
+ id: 811,
44
+ name: "Novak-Djokovic1-1536x961.jpg",
45
+ title: "",
46
+ description: "",
47
+ alt: "",
48
+ tags: [],
49
+ url: "http://images.dev.griddo.io/novak-djokovic1-1536x961",
50
+ thumb: "http://images.dev.griddo.io/w/215/h/161/novak-djokovic1-1536x961",
51
+ publicId: "thesaurus-dev/Novak-Djokovic1-1536x961_4b074dc5-d5b4-4b5f-a220-9b7e7a3f3310",
52
+ damId: "novak-djokovic1-1536x961",
53
+ published: new Date("2022-01-20T16:24:25Z"),
54
+ size: 160626,
55
+ width: 1536,
56
+ height: 961,
57
+ orientation: "L",
58
+ site: "global",
59
+ },
60
+ failed: 0,
61
+ timezone: "Europe/Madrid",
62
+ enabled: true,
63
+ status: "active",
64
+ roles: [
65
+ { siteId: "global", roles: [1] },
66
+ { siteId: 2, roles: [1] },
67
+ { siteId: 81, roles: [1] },
68
+ ],
69
+ isSuperAdmin: false,
70
+ },
71
+ sites: [
72
+ {
73
+ id: 1,
74
+ name: "Site 1",
75
+ theme: "default-theme",
76
+ author: "prueba",
77
+ pages: [],
78
+ updated: true,
79
+ home: "//cx.dev.griddo.io/pre-griddo/componentfolder",
80
+ isPublished: false,
81
+ bigAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_10",
82
+ favicon: "https://images.dev.griddo.io/by-themascot-1920_2",
83
+ published: "2021-11-03T10:42:32.000Z",
84
+ smallAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_9",
85
+ timezone: "Pacific/Pago_Pago",
86
+ lastAccess: "2022-09-05T07:34:19.000Z",
87
+ defaultLanguage: 2,
88
+ thumbnail: "sdfasfdasf",
89
+ path: "asdfasdf",
90
+ domain: 1,
91
+ navigationModules: null,
92
+ },
93
+ {
94
+ id: 2,
95
+ name: "Site 2",
96
+ theme: "default-theme",
97
+ author: "prueba",
98
+ pages: [],
99
+ updated: true,
100
+ home: "//cx.dev.griddo.io/pre-griddo/componentfolder",
101
+ isPublished: false,
102
+ bigAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_10",
103
+ favicon: "https://images.dev.griddo.io/by-themascot-1920_2",
104
+ published: "2021-11-03T10:42:32.000Z",
105
+ smallAvatar: "http://images.dev.griddo.io/griddo-site-thumbnail-ec2ab0ba-9424-4424-8f60-222ec746902d_9",
106
+ timezone: "Pacific/Pago_Pago",
107
+ lastAccess: "2022-09-05T07:34:19.000Z",
108
+ navigationModules: null,
109
+ defaultLanguage: 2,
110
+ thumbnail: "sdfasfdasf",
111
+ path: "asdfasdf",
112
+ domain: 1,
113
+ },
114
+ ],
115
+ roles: [
116
+ {
117
+ id: 1,
118
+ name: "Administrator",
119
+ hex: "#C7ECF8",
120
+ description:
121
+ "You can manage all of your site's settings, users and roles. You can create and publish all pages of your site.",
122
+ permissions: { totalPermissions: "78/78", sitePermissions: [], globalPermissions: [] },
123
+ active: true,
124
+ users: [],
125
+ },
126
+ {
127
+ id: 2,
128
+ name: "Constructor",
129
+ hex: "#B5FBFF",
130
+ description:
131
+ "You can edit your website, add pages, modules, modify URLs, menus, colours and themes, html tags. You don't manage users, or manage the site configuration.",
132
+ permissions: { totalPermissions: "49/78", sitePermissions: [], globalPermissions: [] },
133
+ active: false,
134
+ users: [],
135
+ },
136
+ {
137
+ id: 3,
138
+ name: "Editor",
139
+ hex: "#E2EE9F",
140
+ description: "You have permission to view, add and edit site content, such as pages and blocks.",
141
+ permissions: { totalPermissions: "21/78", sitePermissions: [], globalPermissions: [] },
142
+ active: true,
143
+ users: [],
144
+ },
145
+ {
146
+ id: 4,
147
+ name: "SEO Validator",
148
+ hex: "#FFD7C0",
149
+ description: "You can manage SEO tags.",
150
+ permissions: { totalPermissions: "18/78", sitePermissions: [], globalPermissions: [] },
151
+ active: false,
152
+ users: [],
153
+ },
154
+ {
155
+ id: 5,
156
+ name: "Viewer",
157
+ hex: "#BCCBFF",
158
+ description: "You can view the content, but you cannot edit it.",
159
+ permissions: { totalPermissions: "3/78", sitePermissions: [], globalPermissions: [] },
160
+ active: true,
161
+ users: [],
162
+ },
163
+ ],
164
+ isSelected: false,
165
+ onChange: onChangeMock,
166
+ onClick: onClickMock,
167
+ deleteUser: deleteUserMock,
168
+ updateUser: updateUserMock,
169
+ resendInvitation: resendInvitationMock,
170
+ toggleDeleteToast: toggleDeleteToastMock,
171
+ };
172
+
173
+ beforeAll(() => {
174
+ mockedAxios = new MockAdapter(axios);
175
+ });
176
+
177
+ afterEach(() => {
178
+ cleanup();
179
+ jest.clearAllMocks();
180
+ });
181
+
182
+ describe("UserItem module rendering", () => {
183
+ it("should render the componet", async () => {
184
+ const initialStore = {
185
+ sites: sitesStoreGlobalMock,
186
+ app: appStoreMock,
187
+ };
188
+
189
+ const store = mockStore({ ...defaultStore, ...initialStore });
190
+
191
+ const Component = (
192
+ <Router history={history}>
193
+ <ThemeProvider theme={parseTheme(globalTheme)}>
194
+ <UserItem {...defaultProps} />
195
+ </ThemeProvider>
196
+ </Router>
197
+ );
198
+
199
+ await act(async () => {
200
+ render(Component, { store });
201
+ });
202
+
203
+ expect(screen.getByTestId("user-item")).toBeTruthy();
204
+ expect(screen.getByLabelText("Prueba Prueba")).toBeTruthy();
205
+ expect(screen.getByText("Prueba Prueba")).toBeInTheDocument();
206
+ //expect(screen.getByText("prueba@secuoyas.com")).toBeInTheDocument();
207
+ expect(screen.getByText("@pruebauser")).toBeInTheDocument();
208
+ expect(screen.getByText("Administrator")).toBeInTheDocument();
209
+ expect(screen.getByTestId("sites-cell")).toBeTruthy();
210
+ expect(screen.getByTestId("status-cell")).toBeTruthy();
211
+ expect(screen.queryByTestId("modal-delete-content")).toBeFalsy();
212
+ });
213
+
214
+ it("should render the componet in site", async () => {
215
+ const initialStore = {
216
+ sites: sitesStoreGlobalMock,
217
+ app: appStoreMock,
218
+ };
219
+
220
+ const store = mockStore({ ...defaultStore, ...initialStore });
221
+
222
+ const Component = (
223
+ <Router history={history}>
224
+ <ThemeProvider theme={parseTheme(globalTheme)}>
225
+ <UserItem {...defaultProps} isSiteView={true} siteId={2} />
226
+ </ThemeProvider>
227
+ </Router>
228
+ );
229
+
230
+ await act(async () => {
231
+ render(Component, { store });
232
+ });
233
+
234
+ expect(screen.getByTestId("user-item")).toBeTruthy();
235
+ expect(screen.getByLabelText("Prueba Prueba")).toBeTruthy();
236
+ expect(screen.getByText("Prueba Prueba")).toBeInTheDocument();
237
+ //expect(screen.getByText("prueba@secuoyas.com")).toBeInTheDocument();
238
+ expect(screen.getByText("@pruebauser")).toBeInTheDocument();
239
+ expect(screen.getByText("Administrator")).toBeInTheDocument();
240
+ expect(screen.queryByTestId("sites-cell")).toBeFalsy();
241
+ expect(screen.queryByTestId("status-cell")).toBeFalsy();
242
+ expect(screen.queryByTestId("modal-delete-content")).toBeFalsy();
243
+ });
244
+ });
245
+
246
+ describe("UserItem events", () => {
247
+ it("should call onchange on checkbox click", async () => {
248
+ const initialStore = {
249
+ sites: sitesStoreGlobalMock,
250
+ app: appStoreMock,
251
+ };
252
+
253
+ const store = mockStore({ ...defaultStore, ...initialStore });
254
+
255
+ const Component = (
256
+ <Router history={history}>
257
+ <ThemeProvider theme={parseTheme(globalTheme)}>
258
+ <UserItem {...defaultProps} />
259
+ </ThemeProvider>
260
+ </Router>
261
+ );
262
+
263
+ await act(async () => {
264
+ render(Component, { store });
265
+ });
266
+
267
+ const checkbox = screen.getByLabelText("Prueba Prueba");
268
+ expect(checkbox).toBeTruthy();
269
+ await user.click(checkbox);
270
+
271
+ expect(onChangeMock).toBeCalledWith({ isChecked: true, value: 171 });
272
+ });
273
+
274
+ it("should call onclick on user click", async () => {
275
+ const initialStore = {
276
+ sites: sitesStoreGlobalMock,
277
+ app: appStoreMock,
278
+ };
279
+
280
+ const store = mockStore({ ...defaultStore, ...initialStore });
281
+
282
+ const Component = (
283
+ <Router history={history}>
284
+ <ThemeProvider theme={parseTheme(globalTheme)}>
285
+ <UserItem {...defaultProps} />
286
+ </ThemeProvider>
287
+ </Router>
288
+ );
289
+
290
+ await act(async () => {
291
+ render(Component, { store });
292
+ });
293
+
294
+ const userCell = screen.getByTestId("user-cell");
295
+ expect(userCell).toBeTruthy();
296
+ await user.click(userCell);
297
+
298
+ expect(onClickMock).toBeCalledWith(171);
299
+ });
300
+
301
+ it("should delete user", async () => {
302
+ const initialStore = {
303
+ sites: sitesStoreGlobalMock,
304
+ app: appStoreMock,
305
+ users: usersStoreMock,
306
+ };
307
+
308
+ const store = mockStore({ ...defaultStore, ...initialStore });
309
+ mockedAxios.onDelete("undefined/user/171").reply(200, {});
310
+ mockedAxios.onGet(`undefined/users?order=dateCreated`).reply(200, []);
311
+
312
+ const Component = (
313
+ <Router history={history}>
314
+ <ThemeProvider theme={parseTheme(globalTheme)}>
315
+ <UserItem {...defaultProps} />
316
+ </ThemeProvider>
317
+ </Router>
318
+ );
319
+
320
+ await act(async () => {
321
+ render(Component, { store });
322
+ });
323
+
324
+ const iconAction = screen.getByTestId("icon-action-component");
325
+ await user.click(iconAction);
326
+
327
+ const deleteItem = screen.getByText("delete");
328
+ await user.click(deleteItem);
329
+
330
+ expect(screen.getByTestId("modal-delete-content")).toBeTruthy();
331
+
332
+ const deleteButton = screen.getByText("Delete user");
333
+ await user.click(deleteButton);
334
+
335
+ await waitFor(() => expect(screen.queryByTestId("modal-delete-content")).toBeFalsy());
336
+
337
+ expect(store.getActions()).toContainEqual({
338
+ payload: { users: [] },
339
+ type: "users/SET_USERS",
340
+ });
341
+ });
342
+
343
+ it("should remove user from site", async () => {
344
+ const initialStore = {
345
+ sites: sitesStoreGlobalMock,
346
+ app: appStoreMock,
347
+ users: usersSiteStoreMock,
348
+ };
349
+
350
+ const store = mockStore({ ...defaultStore, ...initialStore });
351
+ mockedAxios.onPut("undefined/user/171").reply(200, {});
352
+ mockedAxios.onGet(`undefined/users?order=dateCreated`).reply(200, []);
353
+
354
+ const Component = (
355
+ <Router history={history}>
356
+ <ThemeProvider theme={parseTheme(globalTheme)}>
357
+ <UserItem {...defaultProps} isSiteView={true} siteId={2} />
358
+ </ThemeProvider>
359
+ </Router>
360
+ );
361
+
362
+ await act(async () => {
363
+ render(Component, { store });
364
+ });
365
+
366
+ const iconAction = screen.getByTestId("icon-action-component");
367
+ await user.click(iconAction);
368
+
369
+ const removeItem = screen.getByText("remove from site");
370
+ await user.click(removeItem);
371
+
372
+ expect(screen.getByTestId("modal-delete-content")).toBeTruthy();
373
+
374
+ const removeButton = screen.getByText("Remove user");
375
+ await user.click(removeButton);
376
+ await waitFor(() => expect(screen.queryByTestId("modal-delete-content")).toBeFalsy());
377
+
378
+ expect(store.getActions()).toContainEqual({
379
+ payload: { users: [] },
380
+ type: "users/SET_USERS",
381
+ });
382
+ });
383
+
384
+ it("should resend invitation", async () => {
385
+ const initialStore = {
386
+ sites: sitesStoreGlobalMock,
387
+ app: appStoreMock,
388
+ };
389
+
390
+ const store = mockStore({ ...defaultStore, ...initialStore });
391
+ mockedAxios.onPut("undefined/user/171/resend").reply(200, {});
392
+
393
+ defaultProps.user.status = "invited";
394
+
395
+ const Component = (
396
+ <Router history={history}>
397
+ <ThemeProvider theme={parseTheme(globalTheme)}>
398
+ <UserItem {...defaultProps} />
399
+ </ThemeProvider>
400
+ </Router>
401
+ );
402
+
403
+ await act(async () => {
404
+ render(Component, { store });
405
+ });
406
+
407
+ expect(screen.queryByTestId("toast-wrapper")).toBeFalsy();
408
+
409
+ const iconAction = screen.getByTestId("icon-action-component");
410
+ await user.click(iconAction);
411
+
412
+ const resendItem = screen.getByText("Resend invitation");
413
+ await user.click(resendItem);
414
+
415
+ await waitFor(() => expect(screen.getByTestId("toast-wrapper")).toBeTruthy());
416
+ });
417
+ });