@hed-hog/core 0.0.370 → 0.0.371

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 (248) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +2 -0
  3. package/dist/ai/ai.service.d.ts.map +1 -1
  4. package/dist/ai/ai.service.js +10 -7
  5. package/dist/ai/ai.service.js.map +1 -1
  6. package/dist/app-command/app-command.module.d.ts +3 -0
  7. package/dist/app-command/app-command.module.d.ts.map +1 -0
  8. package/dist/app-command/app-command.module.js +22 -0
  9. package/dist/app-command/app-command.module.js.map +1 -0
  10. package/dist/app-command/app-command.registry.d.ts +22 -0
  11. package/dist/app-command/app-command.registry.d.ts.map +1 -0
  12. package/dist/{webhook-integration/webhook-command.registry.js → app-command/app-command.registry.js} +6 -6
  13. package/dist/app-command/app-command.registry.js.map +1 -0
  14. package/dist/auth/auth.controller.d.ts +2 -2
  15. package/dist/auth/auth.controller.d.ts.map +1 -1
  16. package/dist/auth/auth.controller.js +20 -7
  17. package/dist/auth/auth.controller.js.map +1 -1
  18. package/dist/auth/auth.service.d.ts +3 -3
  19. package/dist/auth/auth.service.d.ts.map +1 -1
  20. package/dist/auth/auth.service.js +10 -36
  21. package/dist/auth/auth.service.js.map +1 -1
  22. package/dist/auth/dto/forget.dto.d.ts +1 -0
  23. package/dist/auth/dto/forget.dto.d.ts.map +1 -1
  24. package/dist/auth/dto/forget.dto.js +5 -0
  25. package/dist/auth/dto/forget.dto.js.map +1 -1
  26. package/dist/auth/guards/auth.guard.d.ts.map +1 -1
  27. package/dist/auth/guards/auth.guard.js +4 -1
  28. package/dist/auth/guards/auth.guard.js.map +1 -1
  29. package/dist/challenge/challenge.service.d.ts +8 -7
  30. package/dist/challenge/challenge.service.d.ts.map +1 -1
  31. package/dist/challenge/challenge.service.js +27 -19
  32. package/dist/challenge/challenge.service.js.map +1 -1
  33. package/dist/file/dto/upload.dto.d.ts +3 -0
  34. package/dist/file/dto/upload.dto.d.ts.map +1 -1
  35. package/dist/file/dto/upload.dto.js +22 -0
  36. package/dist/file/dto/upload.dto.js.map +1 -1
  37. package/dist/file/file.controller.d.ts +2 -1
  38. package/dist/file/file.controller.d.ts.map +1 -1
  39. package/dist/file/file.controller.js +29 -16
  40. package/dist/file/file.controller.js.map +1 -1
  41. package/dist/file/file.service.d.ts +51 -1
  42. package/dist/file/file.service.d.ts.map +1 -1
  43. package/dist/file/file.service.js +250 -18
  44. package/dist/file/file.service.js.map +1 -1
  45. package/dist/file/image-optimization.service.d.ts +17 -4
  46. package/dist/file/image-optimization.service.d.ts.map +1 -1
  47. package/dist/file/image-optimization.service.js +101 -46
  48. package/dist/file/image-optimization.service.js.map +1 -1
  49. package/dist/file/provider/s3.provider.d.ts.map +1 -1
  50. package/dist/file/provider/s3.provider.js +15 -7
  51. package/dist/file/provider/s3.provider.js.map +1 -1
  52. package/dist/file/provider/spaces.provider.d.ts.map +1 -1
  53. package/dist/file/provider/spaces.provider.js +18 -8
  54. package/dist/file/provider/spaces.provider.js.map +1 -1
  55. package/dist/index.d.ts +4 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integration/services/event-subscriber.registry.d.ts +5 -0
  60. package/dist/integration/services/event-subscriber.registry.d.ts.map +1 -1
  61. package/dist/integration/services/event-subscriber.registry.js +15 -0
  62. package/dist/integration/services/event-subscriber.registry.js.map +1 -1
  63. package/dist/integration/services/outbox.processor.d.ts.map +1 -1
  64. package/dist/integration/services/outbox.processor.js +2 -4
  65. package/dist/integration/services/outbox.processor.js.map +1 -1
  66. package/dist/integration/services/outbox.service.d.ts +4 -2
  67. package/dist/integration/services/outbox.service.d.ts.map +1 -1
  68. package/dist/integration/services/outbox.service.js +26 -15
  69. package/dist/integration/services/outbox.service.js.map +1 -1
  70. package/dist/integration-profile/integration-credential-crypto.service.d.ts +43 -0
  71. package/dist/integration-profile/integration-credential-crypto.service.d.ts.map +1 -0
  72. package/dist/integration-profile/integration-credential-crypto.service.js +142 -0
  73. package/dist/integration-profile/integration-credential-crypto.service.js.map +1 -0
  74. package/dist/integration-profile/integration-profile.controller.d.ts +6 -7
  75. package/dist/integration-profile/integration-profile.controller.d.ts.map +1 -1
  76. package/dist/integration-profile/integration-profile.controller.js +4 -3
  77. package/dist/integration-profile/integration-profile.controller.js.map +1 -1
  78. package/dist/integration-profile/integration-profile.module.d.ts.map +1 -1
  79. package/dist/integration-profile/integration-profile.module.js +5 -2
  80. package/dist/integration-profile/integration-profile.module.js.map +1 -1
  81. package/dist/integration-profile/integration-profile.secrets.d.ts +16 -0
  82. package/dist/integration-profile/integration-profile.secrets.d.ts.map +1 -0
  83. package/dist/integration-profile/integration-profile.secrets.js +56 -0
  84. package/dist/integration-profile/integration-profile.secrets.js.map +1 -0
  85. package/dist/integration-profile/integration-profile.service.d.ts +125 -8
  86. package/dist/integration-profile/integration-profile.service.d.ts.map +1 -1
  87. package/dist/integration-profile/integration-profile.service.js +257 -68
  88. package/dist/integration-profile/integration-profile.service.js.map +1 -1
  89. package/dist/integration-profile/integration-profile.utils.d.ts +17 -0
  90. package/dist/integration-profile/integration-profile.utils.d.ts.map +1 -1
  91. package/dist/integration-profile/integration-profile.utils.js +31 -0
  92. package/dist/integration-profile/integration-profile.utils.js.map +1 -1
  93. package/dist/language/en.json +178 -0
  94. package/dist/language/pt.json +178 -0
  95. package/dist/mail/mail.controller.d.ts.map +1 -1
  96. package/dist/mail/mail.controller.js +5 -28
  97. package/dist/mail/mail.controller.js.map +1 -1
  98. package/dist/mail/mail.module.js +18 -18
  99. package/dist/mail/mail.module.js.map +1 -1
  100. package/dist/mail/mail.service.d.ts +13 -2
  101. package/dist/mail/mail.service.d.ts.map +1 -1
  102. package/dist/mail/mail.service.js +25 -15
  103. package/dist/mail/mail.service.js.map +1 -1
  104. package/dist/mcp-chat/mcp-chat.service.js +6 -5
  105. package/dist/mcp-chat/mcp-chat.service.js.map +1 -1
  106. package/dist/oauth/providers/facebook.provider.js +5 -5
  107. package/dist/oauth/providers/facebook.provider.js.map +1 -1
  108. package/dist/oauth/providers/github.provider.js +5 -5
  109. package/dist/oauth/providers/github.provider.js.map +1 -1
  110. package/dist/oauth/providers/google.provider.js +5 -5
  111. package/dist/oauth/providers/google.provider.js.map +1 -1
  112. package/dist/oauth/providers/microsoft-entra-id.provider.js +5 -5
  113. package/dist/oauth/providers/microsoft-entra-id.provider.js.map +1 -1
  114. package/dist/oauth/providers/microsoft.provider.js +5 -5
  115. package/dist/oauth/providers/microsoft.provider.js.map +1 -1
  116. package/dist/pdf/pdf.service.d.ts +4 -0
  117. package/dist/pdf/pdf.service.d.ts.map +1 -1
  118. package/dist/pdf/pdf.service.js +16 -9
  119. package/dist/pdf/pdf.service.js.map +1 -1
  120. package/dist/profile/profile.controller.d.ts +7 -7
  121. package/dist/profile/profile.controller.d.ts.map +1 -1
  122. package/dist/profile/profile.controller.js +28 -21
  123. package/dist/profile/profile.controller.js.map +1 -1
  124. package/dist/profile/profile.service.d.ts +7 -7
  125. package/dist/profile/profile.service.d.ts.map +1 -1
  126. package/dist/profile/profile.service.js +21 -25
  127. package/dist/profile/profile.service.js.map +1 -1
  128. package/dist/setting/setting.service.d.ts +1 -0
  129. package/dist/setting/setting.service.d.ts.map +1 -1
  130. package/dist/setting/setting.service.js +15 -2
  131. package/dist/setting/setting.service.js.map +1 -1
  132. package/dist/token/token.service.d.ts.map +1 -1
  133. package/dist/token/token.service.js +2 -1
  134. package/dist/token/token.service.js.map +1 -1
  135. package/dist/user/user.controller.d.ts +9 -0
  136. package/dist/user/user.controller.d.ts.map +1 -1
  137. package/dist/user/user.controller.js +13 -0
  138. package/dist/user/user.controller.js.map +1 -1
  139. package/dist/user/user.service.d.ts +7 -0
  140. package/dist/user/user.service.d.ts.map +1 -1
  141. package/dist/user/user.service.js +19 -0
  142. package/dist/user/user.service.js.map +1 -1
  143. package/dist/utils/webauthn-origin.d.ts +11 -0
  144. package/dist/utils/webauthn-origin.d.ts.map +1 -0
  145. package/dist/utils/webauthn-origin.js +37 -0
  146. package/dist/utils/webauthn-origin.js.map +1 -0
  147. package/dist/webhook-integration/webhook-integration.controller.d.ts +13 -0
  148. package/dist/webhook-integration/webhook-integration.controller.d.ts.map +1 -1
  149. package/dist/webhook-integration/webhook-integration.controller.js +29 -0
  150. package/dist/webhook-integration/webhook-integration.controller.js.map +1 -1
  151. package/dist/webhook-integration/webhook-integration.module.js +3 -3
  152. package/dist/webhook-integration/webhook-integration.module.js.map +1 -1
  153. package/dist/webhook-integration/webhook-integration.service.d.ts +18 -2
  154. package/dist/webhook-integration/webhook-integration.service.d.ts.map +1 -1
  155. package/dist/webhook-integration/webhook-integration.service.js +110 -6
  156. package/dist/webhook-integration/webhook-integration.service.js.map +1 -1
  157. package/hedhog/data/integration_provider.yaml +9 -0
  158. package/hedhog/data/integration_type.yaml +6 -0
  159. package/hedhog/data/menu.yaml +6 -0
  160. package/hedhog/data/role.yaml +7 -0
  161. package/hedhog/data/route.yaml +36 -0
  162. package/hedhog/data/setting_group.yaml +119 -13
  163. package/hedhog/frontend/app/access-log/page.tsx.ejs +35 -3
  164. package/hedhog/frontend/app/account/components/active-sessions.tsx.ejs +36 -3
  165. package/hedhog/frontend/app/account/components/mcp-tokens.tsx.ejs +39 -4
  166. package/hedhog/frontend/app/account/components/tokens.tsx.ejs +39 -4
  167. package/hedhog/frontend/app/ai_agent/page.tsx.ejs +35 -2
  168. package/hedhog/frontend/app/configurations/[slug]/components/byte-size-input.tsx.ejs +160 -0
  169. package/hedhog/frontend/app/configurations/[slug]/components/duration-input.tsx.ejs +157 -0
  170. package/hedhog/frontend/app/configurations/[slug]/components/setting-field.tsx.ejs +244 -63
  171. package/hedhog/frontend/app/dashboard/[slug]/dashboard-content.tsx.ejs +33 -1
  172. package/hedhog/frontend/app/dashboard/management/tabs/component-roles-tab.tsx.ejs +35 -3
  173. package/hedhog/frontend/app/dashboard/management/tabs/components-tab.tsx.ejs +36 -4
  174. package/hedhog/frontend/app/dashboard/management/tabs/dashboard-roles-tab.tsx.ejs +35 -3
  175. package/hedhog/frontend/app/dashboard/management/tabs/dashboards-tab.tsx.ejs +36 -4
  176. package/hedhog/frontend/app/dashboard/management/tabs/items-tab.tsx.ejs +35 -3
  177. package/hedhog/frontend/app/integration/profiles/page.tsx.ejs +141 -29
  178. package/hedhog/frontend/app/integrations-webhooks/page.tsx.ejs +118 -11
  179. package/hedhog/frontend/app/mail/log/page.tsx.ejs +37 -4
  180. package/hedhog/frontend/app/menu/page.tsx.ejs +34 -2
  181. package/hedhog/frontend/app/preferences/page.tsx.ejs +77 -0
  182. package/hedhog/frontend/app/roles/menus.tsx.ejs +35 -3
  183. package/hedhog/frontend/app/roles/page.tsx.ejs +34 -2
  184. package/hedhog/frontend/app/roles/routes.tsx.ejs +36 -4
  185. package/hedhog/frontend/app/roles/users.tsx.ejs +36 -4
  186. package/hedhog/frontend/app/routes/page.tsx.ejs +34 -2
  187. package/hedhog/frontend/app/setting-list/page.tsx.ejs +34 -2
  188. package/hedhog/frontend/app/users/page.tsx.ejs +51 -21
  189. package/hedhog/frontend/messages/en.json +69 -4
  190. package/hedhog/frontend/messages/pt.json +69 -4
  191. package/hedhog/table/setting.yaml +2 -0
  192. package/hedhog/table/webhook_call_log.yaml +49 -46
  193. package/package.json +8 -3
  194. package/src/ai/ai.service.ts +9 -6
  195. package/src/app-command/app-command.module.ts +9 -0
  196. package/src/{webhook-integration/webhook-command.registry.ts → app-command/app-command.registry.ts} +9 -9
  197. package/src/auth/auth.controller.ts +20 -4
  198. package/src/auth/auth.service.ts +10 -36
  199. package/src/auth/dto/forget.dto.ts +5 -1
  200. package/src/auth/guards/auth.guard.ts +4 -1
  201. package/src/challenge/challenge.service.ts +30 -19
  202. package/src/file/dto/upload.dto.ts +25 -1
  203. package/src/file/file.controller.ts +31 -18
  204. package/src/file/file.service.ts +341 -16
  205. package/src/file/image-optimization.service.ts +111 -46
  206. package/src/file/provider/s3.provider.ts +16 -7
  207. package/src/file/provider/spaces.provider.ts +15 -5
  208. package/src/index.ts +4 -1
  209. package/src/integration/services/event-subscriber.registry.ts +15 -0
  210. package/src/integration/services/outbox.processor.ts +2 -5
  211. package/src/integration/services/outbox.service.ts +35 -17
  212. package/src/integration-profile/integration-credential-crypto.service.ts +146 -0
  213. package/src/integration-profile/integration-profile.controller.ts +2 -0
  214. package/src/integration-profile/integration-profile.module.ts +5 -2
  215. package/src/integration-profile/integration-profile.secrets.ts +51 -0
  216. package/src/integration-profile/integration-profile.service.ts +335 -54
  217. package/src/integration-profile/integration-profile.utils.ts +56 -0
  218. package/src/language/en.json +5 -1
  219. package/src/language/pt.json +5 -1
  220. package/src/mail/mail.controller.ts +5 -29
  221. package/src/mail/mail.module.ts +5 -5
  222. package/src/mail/mail.service.ts +37 -13
  223. package/src/mcp-chat/mcp-chat.service.ts +5 -5
  224. package/src/oauth/oauth-callback-coordinator.service.spec.ts +159 -0
  225. package/src/oauth/providers/facebook.provider.ts +3 -3
  226. package/src/oauth/providers/github.provider.ts +3 -3
  227. package/src/oauth/providers/google.provider.ts +3 -3
  228. package/src/oauth/providers/microsoft-entra-id.provider.ts +3 -3
  229. package/src/oauth/providers/microsoft.provider.ts +3 -3
  230. package/src/pdf/pdf.service.ts +19 -6
  231. package/src/profile/profile.controller.ts +21 -14
  232. package/src/profile/profile.service.ts +23 -20
  233. package/src/security/security.service.spec.ts +222 -0
  234. package/src/setting/setting.service.ts +15 -2
  235. package/src/token/token.service.ts +2 -1
  236. package/src/user/user.controller.ts +26 -16
  237. package/src/user/user.service.ts +25 -0
  238. package/src/utils/webauthn-origin.ts +38 -0
  239. package/src/webhook-integration/webhook-integration.controller.ts +23 -0
  240. package/src/webhook-integration/webhook-integration.module.ts +3 -3
  241. package/src/webhook-integration/webhook-integration.service.ts +115 -5
  242. package/dist/webhook-integration/webhook-command.registry.d.ts +0 -22
  243. package/dist/webhook-integration/webhook-command.registry.d.ts.map +0 -1
  244. package/dist/webhook-integration/webhook-command.registry.js.map +0 -1
  245. package/src/menu/menu.service.spec.ts +0 -247
  246. package/src/route/route.service.spec.ts +0 -300
  247. package/src/screen/screen.service.spec.ts +0 -298
  248. package/src/user/user.service.spec.ts +0 -294
@@ -1,300 +0,0 @@
1
- // import {
2
- // PageOrderDirection,
3
- // PaginationDTO,
4
- // PaginationService,
5
- // } from '@hed-hog/api-pagination';
6
- // import { PrismaService } from '@hed-hog/api-prisma';
7
- // import { Test, TestingModule } from '@nestjs/testing';
8
- // import { DeleteDTO } from '../dto/delete.dto';
9
- // import { UpdateIdsDTO } from '../dto/update-ids.dto';
10
- // import { CreateDTO } from './dto/create.dto';
11
- // import { UpdateDTO } from './dto/update.dto';
12
- // import { RouteService } from './route.service';
13
-
14
- // describe('RouteService', () => {
15
- // let service: RouteService;
16
- // let prismaService: PrismaService;
17
- // let paginationService: PaginationService;
18
-
19
- // const mockPrismaService = {
20
- // route: {
21
- // findUnique: jest.fn(),
22
- // create: jest.fn(),
23
- // update: jest.fn(),
24
- // deleteMany: jest.fn(),
25
- // },
26
- // role_route: {
27
- // deleteMany: jest.fn(),
28
- // createMany: jest.fn(),
29
- // },
30
- // route_screens: {
31
- // deleteMany: jest.fn(),
32
- // createMany: jest.fn(),
33
- // },
34
- // createInsensitiveSearch: jest.fn(),
35
- // };
36
-
37
- // const mockPaginationService = {
38
- // paginate: jest.fn(),
39
- // };
40
-
41
- // beforeEach(async () => {
42
- // const module: TestingModule = await Test.createTestingModule({
43
- // providers: [
44
- // RouteService,
45
- // { provide: PrismaService, useValue: mockPrismaService },
46
- // { provide: PaginationService, useValue: mockPaginationService },
47
- // ],
48
- // }).compile();
49
-
50
- // service = module.get<RouteService>(RouteService);
51
- // prismaService = module.get<PrismaService>(PrismaService);
52
- // paginationService = module.get<PaginationService>(PaginationService);
53
- // });
54
-
55
- // it('should be defined', () => {
56
- // expect(service).toBeDefined();
57
- // });
58
- // /*
59
- // describe('getRoutes', () => {
60
- // it('should paginate route', async () => {
61
- // const paginationParams: PaginationDTO = {
62
- // page: 1,
63
- // pageSize: 10,
64
- // search: '',
65
- // sortField: '',
66
- // sortOrder: PageOrderDirection.Asc,
67
- // fields: '',
68
- // };
69
- // const result = { data: [], total: 0 };
70
-
71
- // mockPrismaService.createInsensitiveSearch.mockReturnValue([]);
72
- // mockPaginationService.paginate.mockResolvedValue(result);
73
-
74
- // const res = await service.getRoutes(paginationParams);
75
-
76
- // expect(mockPrismaService.createInsensitiveSearch).toHaveBeenCalledWith(
77
- // ['url', 'method'],
78
- // paginationParams,
79
- // );
80
- // expect(mockPaginationService.paginate).toHaveBeenCalledWith(
81
- // mockPrismaService.route,
82
- // paginationParams,
83
- // { where: { OR: [] } },
84
- // );
85
- // expect(res).toEqual(result);
86
- // });
87
- // });
88
- // */
89
- // /*
90
- // describe('getRouteById', () => {
91
- // it('should return a route by ID', async () => {
92
- // const routeId = 1;
93
- // const route = { id: routeId, url: '/test', method: 'GET' };
94
-
95
- // mockPrismaService.route.findUnique.mockResolvedValue(route);
96
-
97
- // const res = await service.getRouteById(routeId);
98
-
99
- // expect(mockPrismaService.route.findUnique).toHaveBeenCalledWith({
100
- // where: { id: routeId },
101
- // });
102
- // expect(res).toEqual(route);
103
- // });
104
- // });*/
105
-
106
- // describe('create', () => {
107
- // it('should create a new route', async () => {
108
- // const createDto: CreateDTO = { url: '/test', method: 'GET' };
109
- // const route = { id: 1, ...createDto };
110
-
111
- // mockPrismaService.route.create.mockResolvedValue(route);
112
-
113
- // const res = await service.create(createDto);
114
-
115
- // expect(mockPrismaService.route.create).toHaveBeenCalledWith({
116
- // data: createDto,
117
- // });
118
- // expect(res).toEqual(route);
119
- // });
120
- // });
121
-
122
- // describe('update', () => {
123
- // it('should update a route', async () => {
124
- // const updateDto: UpdateDTO = { url: '/updated', method: 'POST' };
125
- // const routeId = 1;
126
- // const updatedRoute = { id: routeId, ...updateDto };
127
-
128
- // mockPrismaService.route.update.mockResolvedValue(updatedRoute);
129
-
130
- // const res = await service.update({ id: routeId, data: updateDto });
131
-
132
- // expect(mockPrismaService.route.update).toHaveBeenCalledWith({
133
- // where: { id: routeId },
134
- // data: updateDto,
135
- // });
136
- // expect(res).toEqual(updatedRoute);
137
- // });
138
- // });
139
-
140
- // describe('delete', () => {
141
- // it('should delete route by ids', async () => {
142
- // const deleteDto: DeleteDTO = { ids: [1, 2] };
143
- // const result = { count: 2 };
144
-
145
- // mockPrismaService.route.deleteMany.mockResolvedValue(result);
146
-
147
- // const res = await service.delete(deleteDto);
148
-
149
- // expect(mockPrismaService.route.deleteMany).toHaveBeenCalledWith({
150
- // where: { id: { in: deleteDto.ids } },
151
- // });
152
- // expect(res).toEqual(result);
153
- // });
154
- // });
155
-
156
- // describe('updateRoles', () => {
157
- // it('should update role for a route', async () => {
158
- // const routeId = 1;
159
- // const updateIdsDto: UpdateIdsDTO = { ids: [1, 2] };
160
- // const result = { count: 2 };
161
-
162
- // mockPrismaService.role_route.deleteMany.mockResolvedValue({});
163
- // mockPrismaService.role_route.createMany.mockResolvedValue(result);
164
-
165
- // const res = await service.updateRoles(routeId, updateIdsDto);
166
-
167
- // expect(mockPrismaService.role_route.deleteMany).toHaveBeenCalledWith({
168
- // where: { route_id: routeId },
169
- // });
170
- // expect(mockPrismaService.role_route.createMany).toHaveBeenCalledWith({
171
- // data: updateIdsDto.ids.map((roleId) => ({
172
- // role_id: roleId,
173
- // route_id: routeId,
174
- // })),
175
- // skipDuplicates: true,
176
- // });
177
- // expect(res).toEqual(result);
178
- // });
179
- // });
180
-
181
- // describe('updateScreens', () => {
182
- // it('should update screens for a route', async () => {
183
- // const routeId = 1;
184
- // const updateIdsDto: UpdateIdsDTO = { ids: [1, 2] };
185
- // const result = { count: 2 };
186
-
187
- // mockPrismaService.route_screens.deleteMany.mockResolvedValue({});
188
- // mockPrismaService.route_screens.createMany.mockResolvedValue(result);
189
-
190
- // const res = await service.updateScreens(routeId, updateIdsDto);
191
-
192
- // expect(mockPrismaService.route_screens.deleteMany).toHaveBeenCalledWith({
193
- // where: { route_id: routeId },
194
- // });
195
- // expect(mockPrismaService.route_screens.createMany).toHaveBeenCalledWith({
196
- // data: updateIdsDto.ids.map((screenId) => ({
197
- // screen_id: screenId,
198
- // route_id: routeId,
199
- // })),
200
- // skipDuplicates: true,
201
- // });
202
- // expect(res).toEqual(result);
203
- // });
204
- // });
205
-
206
- // describe('listRoles', () => {
207
- // it('should call paginate method with correct parameters', async () => {
208
- // const locale = 'en';
209
- // const routeId = 1;
210
- // const paginationParams: PaginationDTO = {
211
- // page: 1,
212
- // pageSize: 10,
213
- // search: '',
214
- // sortField: '',
215
- // sortOrder: PageOrderDirection.Asc,
216
- // fields: '',
217
- // };
218
-
219
- // paginationService.paginate = jest.fn().mockResolvedValue({
220
- // data: [],
221
- // total: 0,
222
- // });
223
-
224
- // await service.listRoles(locale, routeId, paginationParams);
225
-
226
- // expect(paginationService.paginate).toHaveBeenCalledWith(
227
- // prismaService.role,
228
- // paginationParams,
229
- // {
230
- // include: {
231
- // role_locale: {
232
- // where: {
233
- // locale: { code: locale },
234
- // },
235
- // select: {
236
- // name: true,
237
- // description: true,
238
- // },
239
- // },
240
- // role_route: {
241
- // where: { route_id: routeId },
242
- // select: {
243
- // route_id: true,
244
- // role_id: true,
245
- // },
246
- // },
247
- // },
248
- // },
249
- // 'role_locale',
250
- // );
251
- // });
252
- // });
253
-
254
- // describe('listScreens', () => {
255
- // it('should call paginate method with correct parameters', async () => {
256
- // const locale = 'en';
257
- // const routeId = 1;
258
- // const paginationParams: PaginationDTO = {
259
- // page: 1,
260
- // pageSize: 10,
261
- // search: '',
262
- // sortField: '',
263
- // sortOrder: PageOrderDirection.Asc,
264
- // fields: '',
265
- // };
266
-
267
- // paginationService.paginate = jest.fn().mockResolvedValue({
268
- // data: [],
269
- // total: 0,
270
- // });
271
-
272
- // await service.listScreens(locale, routeId, paginationParams);
273
-
274
- // expect(paginationService.paginate).toHaveBeenCalledWith(
275
- // prismaService.screens,
276
- // paginationParams,
277
- // {
278
- // include: {
279
- // screen_locale: {
280
- // where: {
281
- // locale: { code: locale },
282
- // },
283
- // select: {
284
- // name: true,
285
- // },
286
- // },
287
- // route_screens: {
288
- // where: { route_id: routeId },
289
- // select: {
290
- // route_id: true,
291
- // screen_id: true,
292
- // },
293
- // },
294
- // },
295
- // },
296
- // 'screen_locale',
297
- // );
298
- // });
299
- // });
300
- // });
@@ -1,298 +0,0 @@
1
- // import {
2
- // PageOrderDirection,
3
- // PaginationDTO,
4
- // PaginationService,
5
- // } from '@hed-hog/api-pagination';
6
- // import { PrismaService } from '@hed-hog/api-prisma';
7
- // import { BadRequestException } from '@nestjs/common';
8
- // import { Test, TestingModule } from '@nestjs/testing';
9
- // import { DeleteDTO } from '../dto/delete.dto';
10
- // import { UpdateIdsDTO } from '../dto/update-ids.dto';
11
- // import { ScreenService } from './screen.service';
12
-
13
- // describe('ScreenService', () => {
14
- // let service: ScreenService;
15
- // let prismaService: PrismaService;
16
- // let paginationService: PaginationService;
17
-
18
- // beforeEach(async () => {
19
- // const module: TestingModule = await Test.createTestingModule({
20
- // providers: [
21
- // ScreenService,
22
- // {
23
- // provide: PrismaService,
24
- // useValue: {
25
- // screens: {
26
- // create: jest.fn(),
27
- // update: jest.fn(),
28
- // deleteMany: jest.fn(),
29
- // findUnique: jest.fn(),
30
- // },
31
- // route: {
32
- // findMany: jest.fn(),
33
- // },
34
- // role_screen: {
35
- // deleteMany: jest.fn(),
36
- // createMany: jest.fn(),
37
- // },
38
- // route_screens: {
39
- // deleteMany: jest.fn(),
40
- // createMany: jest.fn(),
41
- // },
42
- // createInsensitiveSearch: jest.fn(),
43
- // },
44
- // },
45
- // {
46
- // provide: PaginationService,
47
- // useValue: {
48
- // paginate: jest.fn(),
49
- // },
50
- // },
51
- // ],
52
- // }).compile();
53
-
54
- // service = module.get<ScreenService>(ScreenService);
55
- // prismaService = module.get<PrismaService>(PrismaService);
56
- // paginationService = module.get<PaginationService>(PaginationService);
57
- // });
58
-
59
- // it('should be defined', () => {
60
- // expect(service).toBeDefined();
61
- // });
62
-
63
- // describe('create', () => {
64
- // it('should create a screen', async () => {
65
- // const createDTO = {
66
- // name: 'Test Screen',
67
- // slug: 'test-screen',
68
- // description: 'This is a test screen',
69
- // icon: 'test-icon',
70
- // };
71
-
72
- // jest
73
- // .spyOn(prismaService.screens, 'create')
74
- // .mockResolvedValue(createDTO as any);
75
-
76
- // const result = await service.create(createDTO);
77
-
78
- // expect(prismaService.screens.create).toHaveBeenCalledWith({
79
- // data: createDTO,
80
- // });
81
- // expect(result).toEqual(createDTO);
82
- // });
83
- // });
84
-
85
- // describe('delete', () => {
86
- // it('should throw an error if no ids are provided', async () => {
87
- // const deleteDTO: DeleteDTO = { ids: null };
88
-
89
- // await expect(service.delete(deleteDTO)).rejects.toThrow(
90
- // new BadRequestException(
91
- // `You must select at least one screen to delete.`,
92
- // ),
93
- // );
94
- // });
95
-
96
- // it('should delete screens by ids', async () => {
97
- // const deleteDTO: DeleteDTO = { ids: [1, 2] };
98
-
99
- // jest.spyOn(prismaService.screens, 'deleteMany').mockResolvedValue({
100
- // count: 2,
101
- // });
102
-
103
- // await service.delete(deleteDTO);
104
-
105
- // expect(prismaService.screens.deleteMany).toHaveBeenCalledWith({
106
- // where: { id: { in: deleteDTO.ids } },
107
- // });
108
- // });
109
- // });
110
-
111
- // describe('update', () => {
112
- // it('should update a screen', async () => {
113
- // const updateDTO = {
114
- // id: 1,
115
- // name: 'Updated Screen',
116
- // slug: 'updated-screen',
117
- // icon: 'update-icon',
118
- // created_at: new Date(),
119
- // updated_at: new Date(),
120
- // };
121
- // const updateInput = { id: 1, data: updateDTO };
122
-
123
- // jest.spyOn(prismaService.screens, 'update').mockResolvedValue(updateDTO);
124
-
125
- // const result = await service.update(updateInput);
126
-
127
- // expect(prismaService.screens.update).toHaveBeenCalledWith({
128
- // where: { id: updateInput.id },
129
- // data: updateInput.data,
130
- // });
131
- // expect(result).toEqual(updateDTO);
132
- // });
133
- // });
134
-
135
- // describe('get', () => {
136
- // it('should get a screen by id', async () => {
137
- // const screen = {
138
- // id: 1,
139
- // name: 'Updated Screen',
140
- // slug: 'updated-screen',
141
- // icon: 'update-icon',
142
- // created_at: new Date(),
143
- // updated_at: new Date(),
144
- // };
145
-
146
- // jest.spyOn(prismaService.screens, 'findUnique').mockResolvedValue(screen);
147
-
148
- // const result = await service.get(1);
149
-
150
- // expect(prismaService.screens.findUnique).toHaveBeenCalledWith({
151
- // where: { id: 1 },
152
- // });
153
- // expect(result).toEqual(screen);
154
- // });
155
- // });
156
-
157
- // describe('updateRoles', () => {
158
- // it('should update role for a screen', async () => {
159
- // const screenId = 1;
160
- // const updateIdsDTO: UpdateIdsDTO = { ids: [1, 2, 3] };
161
- // jest.spyOn(prismaService.role_screen, 'deleteMany').mockResolvedValue({
162
- // count: 1,
163
- // });
164
-
165
- // jest.spyOn(prismaService.role_screen, 'createMany').mockResolvedValue({
166
- // count: updateIdsDTO.ids.length,
167
- // });
168
-
169
- // await service.updateRoles(screenId, updateIdsDTO);
170
-
171
- // expect(prismaService.role_screen.deleteMany).toHaveBeenCalledWith({
172
- // where: { screen_id: screenId },
173
- // });
174
- // expect(prismaService.role_screen.createMany).toHaveBeenCalledWith({
175
- // data: updateIdsDTO.ids.map((roleId) => ({
176
- // screen_id: screenId,
177
- // role_id: roleId,
178
- // })),
179
- // skipDuplicates: true,
180
- // });
181
- // });
182
- // });
183
-
184
- // describe('updateRoutes', () => {
185
- // it('should delete existing route_screens and create new ones', async () => {
186
- // const screenId = 1;
187
- // const updateIdsDTO: UpdateIdsDTO = { ids: [1, 2, 3] };
188
-
189
- // prismaService.route.findMany = jest
190
- // .fn()
191
- // .mockResolvedValue([{ id: 1 }, { id: 2 }, { id: 3 }]);
192
-
193
- // prismaService.route_screens.deleteMany = jest.fn();
194
- // prismaService.route_screens.createMany = jest.fn();
195
-
196
- // await service.updateRoutes(screenId, updateIdsDTO);
197
-
198
- // expect(prismaService.route.findMany).toHaveBeenCalledWith({
199
- // where: { id: { in: updateIdsDTO.ids } },
200
- // select: { id: true },
201
- // });
202
-
203
- // expect(prismaService.route_screens.deleteMany).toHaveBeenCalledWith({
204
- // where: { screen_id: screenId },
205
- // });
206
-
207
- // expect(prismaService.route_screens.createMany).toHaveBeenCalledWith({
208
- // data: updateIdsDTO.ids.map((routeId) => ({
209
- // screen_id: screenId,
210
- // route_id: routeId,
211
- // })),
212
- // skipDuplicates: true,
213
- // });
214
- // });
215
- // });
216
-
217
- // describe('listRoles', () => {
218
- // it('should call paginate method with correct parameters', async () => {
219
- // const locale = 'en';
220
- // const screenId = 1;
221
- // const paginationParams: PaginationDTO = {
222
- // page: 1,
223
- // pageSize: 10,
224
- // search: '',
225
- // sortField: '',
226
- // sortOrder: PageOrderDirection.Asc,
227
- // fields: '',
228
- // };
229
-
230
- // paginationService.paginate = jest.fn().mockResolvedValue({
231
- // data: [],
232
- // total: 0,
233
- // });
234
-
235
- // await service.listRoles(locale, screenId, paginationParams);
236
-
237
- // expect(paginationService.paginate).toHaveBeenCalledWith(
238
- // prismaService.role,
239
- // paginationParams,
240
- // {
241
- // include: {
242
- // role_screen: {
243
- // where: {
244
- // screen_id: screenId,
245
- // },
246
- // select: {
247
- // role_id: true,
248
- // screen_id: true,
249
- // },
250
- // },
251
- // },
252
- // },
253
- // );
254
- // });
255
- // });
256
-
257
- // describe('listRoutes', () => {
258
- // it('should paginate the route linked to a screen', async () => {
259
- // const paginationParams: PaginationDTO = {
260
- // page: 1,
261
- // pageSize: 10,
262
- // search: '',
263
- // sortField: '',
264
- // sortOrder: PageOrderDirection.Asc,
265
- // fields: '',
266
- // };
267
- // const screenId = 1;
268
- // const mockPaginationResult = {
269
- // data: [],
270
- // total: 10,
271
- // lastPage: 1,
272
- // page: 1,
273
- // prev: 0,
274
- // next: 2,
275
- // pageSize: 10,
276
- // };
277
-
278
- // jest
279
- // .spyOn(paginationService, 'paginate')
280
- // .mockResolvedValue(mockPaginationResult);
281
-
282
- // await service.listRoutes(screenId, paginationParams);
283
-
284
- // expect(paginationService.paginate).toHaveBeenCalledWith(
285
- // prismaService.route,
286
- // paginationParams,
287
- // {
288
- // include: {
289
- // route_screens: {
290
- // where: { screen_id: screenId },
291
- // select: { route_id: true, screen_id: true },
292
- // },
293
- // },
294
- // },
295
- // );
296
- // });
297
- // });
298
- // });