@hedhog/admin 0.11.1 → 0.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 (54) hide show
  1. package/{hedhog.yaml → bkp.hedhog.yaml} +1012 -814
  2. package/dist/auth/consts/body.js +23 -23
  3. package/package.json +43 -43
  4. package/src/admin.module.ts +37 -37
  5. package/src/auth/auth.controller.ts +72 -72
  6. package/src/auth/auth.module.ts +39 -39
  7. package/src/auth/auth.service.spec.ts +196 -196
  8. package/src/auth/auth.service.ts +234 -234
  9. package/src/auth/consts/body.ts +26 -26
  10. package/src/auth/consts/subject.ts +1 -1
  11. package/src/auth/dto/forget.dto.ts +6 -6
  12. package/src/auth/dto/login.dto.ts +15 -15
  13. package/src/auth/dto/otp.dto.ts +11 -11
  14. package/src/auth/dto/reset.dto.ts +14 -14
  15. package/src/auth/enums/multifactor-type.enum.ts +4 -4
  16. package/src/auth/guards/auth.guard.ts +50 -50
  17. package/src/auth/types/user.type.ts +8 -8
  18. package/src/dto/delete.dto.ts +8 -8
  19. package/src/dto/update-ids.dto.ts +9 -9
  20. package/src/index.ts +20 -20
  21. package/src/menu/dto/create.dto.ts +25 -25
  22. package/src/menu/dto/order.dto.ts +8 -8
  23. package/src/menu/dto/update.dto.ts +19 -19
  24. package/src/menu/menu.controller.ts +105 -105
  25. package/src/menu/menu.module.ts +18 -18
  26. package/src/menu/menu.service.spec.ts +247 -247
  27. package/src/menu/menu.service.ts +263 -263
  28. package/src/role/dto/create.dto.ts +7 -7
  29. package/src/role/dto/update.dto.ts +4 -4
  30. package/src/role/guards/role.guard.ts +123 -123
  31. package/src/role/role.controller.ts +126 -126
  32. package/src/role/role.module.ts +28 -28
  33. package/src/role/role.service.spec.ts +417 -417
  34. package/src/role/role.service.ts +289 -289
  35. package/src/route/dto/create.dto.ts +13 -13
  36. package/src/route/dto/update.dto.ts +15 -15
  37. package/src/route/route.controller.ts +91 -91
  38. package/src/route/route.module.ts +18 -18
  39. package/src/route/route.service.spec.ts +300 -300
  40. package/src/route/route.service.ts +164 -164
  41. package/src/screen/dto/create.dto.ts +11 -11
  42. package/src/screen/dto/update.dto.ts +19 -19
  43. package/src/screen/screen.controller.ts +93 -93
  44. package/src/screen/screen.module.ts +18 -18
  45. package/src/screen/screen.service.spec.ts +298 -298
  46. package/src/screen/screen.service.ts +179 -179
  47. package/src/types/http-method.ts +8 -8
  48. package/src/user/constants/user.constants.ts +1 -1
  49. package/src/user/dto/create.dto.ts +24 -24
  50. package/src/user/dto/update.dto.ts +41 -41
  51. package/src/user/user.controller.ts +75 -75
  52. package/src/user/user.module.ts +18 -18
  53. package/src/user/user.service.spec.ts +294 -294
  54. package/src/user/user.service.ts +129 -129
@@ -1,298 +1,298 @@
1
- // import {
2
- // PageOrderDirection,
3
- // PaginationDTO,
4
- // PaginationService,
5
- // } from '@hedhog/pagination';
6
- // import { PrismaService } from '@hedhog/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
- // });
1
+ // import {
2
+ // PageOrderDirection,
3
+ // PaginationDTO,
4
+ // PaginationService,
5
+ // } from '@hedhog/pagination';
6
+ // import { PrismaService } from '@hedhog/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
+ // });