@flusys/nestjs-task-manager 7.0.2 → 8.0.0-beta.1

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 (163) hide show
  1. package/config/index.d.ts +3 -3
  2. package/controllers/index.d.ts +5 -5
  3. package/controllers/task-board.controller.d.ts +3 -3
  4. package/controllers/task-comment.controller.d.ts +2 -2
  5. package/controllers/task-label.controller.d.ts +2 -2
  6. package/controllers/task-list.controller.d.ts +3 -3
  7. package/controllers/task.controller.d.ts +4 -4
  8. package/docs/index.d.ts +1 -1
  9. package/docs/task-manager-swagger.config.d.ts +1 -1
  10. package/dtos/index.d.ts +5 -5
  11. package/dtos/task-board.dto.d.ts +1 -1
  12. package/dtos/task.dto.d.ts +2 -2
  13. package/entities/index.d.ts +19 -19
  14. package/entities/task-board-with-company.entity.d.ts +1 -1
  15. package/fesm/234.js +1393 -0
  16. package/fesm/431.js +981 -0
  17. package/fesm/827.js +1054 -0
  18. package/fesm/988.js +881 -0
  19. package/fesm/config/index.js +156 -3
  20. package/fesm/controllers/index.js +21 -5
  21. package/fesm/docs/index.js +58 -1
  22. package/fesm/dtos/index.js +280 -5
  23. package/fesm/entities/index.js +26 -46
  24. package/fesm/gateways/index.js +288 -1
  25. package/fesm/index.js +440 -9
  26. package/fesm/interfaces/index.js +16 -2
  27. package/fesm/modules/index.js +210 -1
  28. package/fesm/runtime.js +85 -0
  29. package/fesm/services/index.js +53 -8
  30. package/gateways/index.d.ts +1 -1
  31. package/gateways/task-board.gateway.d.ts +3 -3
  32. package/index.d.ts +9 -9
  33. package/interfaces/index.d.ts +2 -2
  34. package/interfaces/task-manager-module.interface.d.ts +3 -3
  35. package/interfaces/task.interface.d.ts +2 -2
  36. package/modules/index.d.ts +1 -1
  37. package/modules/task-manager.module.d.ts +2 -2
  38. package/package.json +26 -36
  39. package/services/index.d.ts +8 -8
  40. package/services/task-activity.service.d.ts +1 -1
  41. package/services/task-board.service.d.ts +5 -5
  42. package/services/task-comment.service.d.ts +4 -4
  43. package/services/task-label.service.d.ts +4 -4
  44. package/services/task-list.service.d.ts +4 -4
  45. package/services/task-manager-config.service.d.ts +3 -3
  46. package/services/task-manager-datasource.provider.d.ts +3 -3
  47. package/services/task.service.d.ts +7 -7
  48. package/cjs/config/event-actions.js +0 -37
  49. package/cjs/config/index.js +0 -20
  50. package/cjs/config/message-keys.js +0 -92
  51. package/cjs/config/task-manager.constants.js +0 -11
  52. package/cjs/controllers/index.js +0 -22
  53. package/cjs/controllers/task-board.controller.js +0 -219
  54. package/cjs/controllers/task-board.controller.spec.js +0 -132
  55. package/cjs/controllers/task-comment.controller.js +0 -103
  56. package/cjs/controllers/task-comment.controller.spec.js +0 -86
  57. package/cjs/controllers/task-label.controller.js +0 -112
  58. package/cjs/controllers/task-label.controller.spec.js +0 -88
  59. package/cjs/controllers/task-list.controller.js +0 -158
  60. package/cjs/controllers/task-list.controller.spec.js +0 -112
  61. package/cjs/controllers/task.controller.js +0 -199
  62. package/cjs/controllers/task.controller.spec.js +0 -131
  63. package/cjs/docs/index.js +0 -18
  64. package/cjs/docs/task-manager-swagger.config.js +0 -43
  65. package/cjs/docs/task-manager-swagger.config.spec.js +0 -28
  66. package/cjs/dtos/index.js +0 -22
  67. package/cjs/dtos/task-board.dto.js +0 -310
  68. package/cjs/dtos/task-comment.dto.js +0 -131
  69. package/cjs/dtos/task-label.dto.js +0 -120
  70. package/cjs/dtos/task-list.dto.js +0 -198
  71. package/cjs/dtos/task.dto.js +0 -367
  72. package/cjs/entities/index.js +0 -72
  73. package/cjs/entities/index.spec.js +0 -30
  74. package/cjs/entities/task-activity.entity.js +0 -98
  75. package/cjs/entities/task-assignee.entity.js +0 -67
  76. package/cjs/entities/task-board-member.entity.js +0 -94
  77. package/cjs/entities/task-board-with-company.entity.js +0 -57
  78. package/cjs/entities/task-board.entity.js +0 -88
  79. package/cjs/entities/task-comment.entity.js +0 -80
  80. package/cjs/entities/task-label.entity.js +0 -72
  81. package/cjs/entities/task-list.entity.js +0 -104
  82. package/cjs/entities/task-task-label.entity.js +0 -67
  83. package/cjs/entities/task.entity.js +0 -151
  84. package/cjs/gateways/index.js +0 -18
  85. package/cjs/gateways/task-board.gateway.js +0 -167
  86. package/cjs/gateways/task-board.gateway.spec.js +0 -243
  87. package/cjs/index.js +0 -26
  88. package/cjs/interfaces/index.js +0 -19
  89. package/cjs/interfaces/task-manager-module.interface.js +0 -4
  90. package/cjs/interfaces/task.interface.js +0 -4
  91. package/cjs/modules/index.js +0 -18
  92. package/cjs/modules/task-manager.module.js +0 -135
  93. package/cjs/modules/task-manager.module.spec.js +0 -144
  94. package/cjs/services/index.js +0 -25
  95. package/cjs/services/task-activity.service.js +0 -76
  96. package/cjs/services/task-activity.service.spec.js +0 -125
  97. package/cjs/services/task-board.service.js +0 -247
  98. package/cjs/services/task-board.service.spec.js +0 -465
  99. package/cjs/services/task-comment.service.js +0 -103
  100. package/cjs/services/task-comment.service.spec.js +0 -160
  101. package/cjs/services/task-label.service.js +0 -97
  102. package/cjs/services/task-label.service.spec.js +0 -138
  103. package/cjs/services/task-list.service.js +0 -130
  104. package/cjs/services/task-list.service.spec.js +0 -284
  105. package/cjs/services/task-manager-config.service.js +0 -69
  106. package/cjs/services/task-manager-config.service.spec.js +0 -98
  107. package/cjs/services/task-manager-datasource.provider.js +0 -84
  108. package/cjs/services/task-manager-datasource.provider.spec.js +0 -131
  109. package/cjs/services/task.service.js +0 -398
  110. package/cjs/services/task.service.spec.js +0 -700
  111. package/fesm/config/event-actions.js +0 -16
  112. package/fesm/config/message-keys.js +0 -65
  113. package/fesm/config/task-manager.constants.js +0 -1
  114. package/fesm/controllers/task-board.controller.js +0 -209
  115. package/fesm/controllers/task-board.controller.spec.js +0 -128
  116. package/fesm/controllers/task-comment.controller.js +0 -93
  117. package/fesm/controllers/task-comment.controller.spec.js +0 -82
  118. package/fesm/controllers/task-label.controller.js +0 -102
  119. package/fesm/controllers/task-label.controller.spec.js +0 -84
  120. package/fesm/controllers/task-list.controller.js +0 -148
  121. package/fesm/controllers/task-list.controller.spec.js +0 -108
  122. package/fesm/controllers/task.controller.js +0 -189
  123. package/fesm/controllers/task.controller.spec.js +0 -127
  124. package/fesm/docs/task-manager-swagger.config.js +0 -33
  125. package/fesm/docs/task-manager-swagger.config.spec.js +0 -24
  126. package/fesm/dtos/task-board.dto.js +0 -277
  127. package/fesm/dtos/task-comment.dto.js +0 -110
  128. package/fesm/dtos/task-label.dto.js +0 -99
  129. package/fesm/dtos/task-list.dto.js +0 -174
  130. package/fesm/dtos/task.dto.js +0 -337
  131. package/fesm/entities/index.spec.js +0 -26
  132. package/fesm/entities/task-activity.entity.js +0 -88
  133. package/fesm/entities/task-assignee.entity.js +0 -57
  134. package/fesm/entities/task-board-member.entity.js +0 -76
  135. package/fesm/entities/task-board-with-company.entity.js +0 -47
  136. package/fesm/entities/task-board.entity.js +0 -78
  137. package/fesm/entities/task-comment.entity.js +0 -70
  138. package/fesm/entities/task-label.entity.js +0 -62
  139. package/fesm/entities/task-list.entity.js +0 -94
  140. package/fesm/entities/task-task-label.entity.js +0 -57
  141. package/fesm/entities/task.entity.js +0 -133
  142. package/fesm/gateways/task-board.gateway.js +0 -157
  143. package/fesm/gateways/task-board.gateway.spec.js +0 -239
  144. package/fesm/interfaces/task-manager-module.interface.js +0 -1
  145. package/fesm/interfaces/task.interface.js +0 -1
  146. package/fesm/modules/task-manager.module.js +0 -125
  147. package/fesm/modules/task-manager.module.spec.js +0 -140
  148. package/fesm/services/task-activity.service.js +0 -66
  149. package/fesm/services/task-activity.service.spec.js +0 -121
  150. package/fesm/services/task-board.service.js +0 -237
  151. package/fesm/services/task-board.service.spec.js +0 -461
  152. package/fesm/services/task-comment.service.js +0 -93
  153. package/fesm/services/task-comment.service.spec.js +0 -156
  154. package/fesm/services/task-label.service.js +0 -87
  155. package/fesm/services/task-label.service.spec.js +0 -134
  156. package/fesm/services/task-list.service.js +0 -120
  157. package/fesm/services/task-list.service.spec.js +0 -280
  158. package/fesm/services/task-manager-config.service.js +0 -59
  159. package/fesm/services/task-manager-config.service.spec.js +0 -94
  160. package/fesm/services/task-manager-datasource.provider.js +0 -74
  161. package/fesm/services/task-manager-datasource.provider.spec.js +0 -127
  162. package/fesm/services/task.service.js +0 -388
  163. package/fesm/services/task.service.spec.js +0 -696
@@ -1,103 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TaskCommentController", {
6
- enumerable: true,
7
- get: function() {
8
- return TaskCommentController;
9
- }
10
- });
11
- const _classes = require("@flusys/nestjs-shared/classes");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _nestjsshared = require("@flusys/nestjs-shared");
15
- const _dtos = require("../dtos");
16
- const _taskcommentservice = require("../services/task-comment.service");
17
- function _define_property(obj, key, value) {
18
- if (key in obj) {
19
- Object.defineProperty(obj, key, {
20
- value: value,
21
- enumerable: true,
22
- configurable: true,
23
- writable: true
24
- });
25
- } else {
26
- obj[key] = value;
27
- }
28
- return obj;
29
- }
30
- function _ts_decorate(decorators, target, key, desc) {
31
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34
- return c > 3 && r && Object.defineProperty(target, key, r), r;
35
- }
36
- function _ts_metadata(k, v) {
37
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
38
- }
39
- function _ts_param(paramIndex, decorator) {
40
- return function(target, key) {
41
- decorator(target, key, paramIndex);
42
- };
43
- }
44
- let TaskCommentController = class TaskCommentController extends (0, _classes.createApiController)(_dtos.CreateTaskCommentDto, _dtos.UpdateTaskCommentDto, _dtos.TaskCommentResponseDto, {
45
- entityName: 'task.comment',
46
- enabledEndpoints: [
47
- 'insert',
48
- 'insertMany',
49
- 'getById',
50
- 'getAll',
51
- 'update',
52
- 'updateMany',
53
- 'delete'
54
- ],
55
- security: {
56
- insert: {
57
- level: 'permission',
58
- permissions: [
59
- _nestjsshared.TASK_COMMENT_PERMISSIONS.CREATE
60
- ]
61
- },
62
- insertMany: {
63
- level: 'permission',
64
- permissions: [
65
- _nestjsshared.TASK_COMMENT_PERMISSIONS.CREATE
66
- ]
67
- },
68
- getById: {
69
- level: 'jwt'
70
- },
71
- getAll: {
72
- level: 'permission',
73
- permissions: [
74
- _nestjsshared.TASK_COMMENT_PERMISSIONS.READ
75
- ]
76
- },
77
- update: {
78
- level: 'jwt'
79
- },
80
- updateMany: {
81
- level: 'jwt'
82
- },
83
- delete: {
84
- level: 'permission',
85
- permissions: [
86
- _nestjsshared.TASK_COMMENT_PERMISSIONS.DELETE
87
- ]
88
- }
89
- }
90
- }) {
91
- constructor(commentService){
92
- super(commentService), _define_property(this, "commentService", void 0), this.commentService = commentService;
93
- }
94
- };
95
- TaskCommentController = _ts_decorate([
96
- (0, _swagger.ApiTags)('Task Manager - Comments'),
97
- (0, _common.Controller)('task-manager/comment'),
98
- _ts_param(0, (0, _common.Inject)(_taskcommentservice.TaskCommentService)),
99
- _ts_metadata("design:type", Function),
100
- _ts_metadata("design:paramtypes", [
101
- typeof _taskcommentservice.TaskCommentService === "undefined" ? Object : _taskcommentservice.TaskCommentService
102
- ])
103
- ], TaskCommentController);
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _taskcommentcontroller = require("./task-comment.controller");
7
- function buildComment(overrides = {}) {
8
- return {
9
- id: 'comment-1',
10
- taskId: 'task-uuid-1',
11
- userId: 'user-uuid-1',
12
- body: 'Looks good to me',
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('TaskCommentController', ()=>{
20
- let controller;
21
- let mockCommentService;
22
- beforeEach(()=>{
23
- mockCommentService = {
24
- insert: jest.fn(),
25
- findById: jest.fn(),
26
- getAll: jest.fn(),
27
- update: jest.fn(),
28
- delete: jest.fn()
29
- };
30
- controller = new _taskcommentcontroller.TaskCommentController(mockCommentService);
31
- });
32
- it('wires the injected service onto the generated controller base', ()=>{
33
- expect(controller.service).toBe(mockCommentService);
34
- });
35
- describe('insert', ()=>{
36
- it('creates a comment and returns the mapped response', async ()=>{
37
- const user = (0, _loggedusermock.buildMockUser)();
38
- mockCommentService.insert.mockResolvedValue(buildComment());
39
- const result = await controller.insert({
40
- taskId: 'task-uuid-1',
41
- body: 'Looks good to me'
42
- }, user);
43
- expect(mockCommentService.insert).toHaveBeenCalledWith({
44
- taskId: 'task-uuid-1',
45
- body: 'Looks good to me'
46
- }, user);
47
- expect(result.success).toBe(true);
48
- expect(result.data).toEqual(expect.objectContaining({
49
- id: 'comment-1'
50
- }));
51
- });
52
- });
53
- describe('getAll', ()=>{
54
- it('paginates comments and maps the response list', async ()=>{
55
- mockCommentService.getAll.mockResolvedValue({
56
- data: [
57
- buildComment()
58
- ],
59
- total: 1
60
- });
61
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
62
- expect(mockCommentService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
63
- expect(result.data).toHaveLength(1);
64
- });
65
- });
66
- describe('delete', ()=>{
67
- it('delegates soft-delete to the service', async ()=>{
68
- mockCommentService.delete.mockResolvedValue({
69
- count: 1
70
- });
71
- const result = await controller.delete({
72
- id: [
73
- 'comment-1'
74
- ],
75
- type: 'delete'
76
- }, (0, _loggedusermock.buildMockUser)());
77
- expect(mockCommentService.delete).toHaveBeenCalledWith({
78
- id: [
79
- 'comment-1'
80
- ],
81
- type: 'delete'
82
- }, (0, _loggedusermock.buildMockUser)());
83
- expect(result.success).toBe(true);
84
- });
85
- });
86
- });
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TaskLabelController", {
6
- enumerable: true,
7
- get: function() {
8
- return TaskLabelController;
9
- }
10
- });
11
- const _classes = require("@flusys/nestjs-shared/classes");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _nestjsshared = require("@flusys/nestjs-shared");
15
- const _dtos = require("../dtos");
16
- const _tasklabelservice = require("../services/task-label.service");
17
- function _define_property(obj, key, value) {
18
- if (key in obj) {
19
- Object.defineProperty(obj, key, {
20
- value: value,
21
- enumerable: true,
22
- configurable: true,
23
- writable: true
24
- });
25
- } else {
26
- obj[key] = value;
27
- }
28
- return obj;
29
- }
30
- function _ts_decorate(decorators, target, key, desc) {
31
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34
- return c > 3 && r && Object.defineProperty(target, key, r), r;
35
- }
36
- function _ts_metadata(k, v) {
37
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
38
- }
39
- function _ts_param(paramIndex, decorator) {
40
- return function(target, key) {
41
- decorator(target, key, paramIndex);
42
- };
43
- }
44
- let TaskLabelController = class TaskLabelController extends (0, _classes.createApiController)(_dtos.CreateTaskLabelDto, _dtos.UpdateTaskLabelDto, _dtos.TaskLabelResponseDto, {
45
- entityName: 'task.label',
46
- enabledEndpoints: [
47
- 'insert',
48
- 'insertMany',
49
- 'getById',
50
- 'getAll',
51
- 'update',
52
- 'updateMany',
53
- 'delete'
54
- ],
55
- security: {
56
- insert: {
57
- level: 'permission',
58
- permissions: [
59
- _nestjsshared.TASK_LABEL_PERMISSIONS.CREATE
60
- ]
61
- },
62
- insertMany: {
63
- level: 'permission',
64
- permissions: [
65
- _nestjsshared.TASK_LABEL_PERMISSIONS.CREATE
66
- ]
67
- },
68
- getById: {
69
- level: 'permission',
70
- permissions: [
71
- _nestjsshared.TASK_LABEL_PERMISSIONS.READ
72
- ]
73
- },
74
- getAll: {
75
- level: 'permission',
76
- permissions: [
77
- _nestjsshared.TASK_LABEL_PERMISSIONS.READ
78
- ]
79
- },
80
- update: {
81
- level: 'permission',
82
- permissions: [
83
- _nestjsshared.TASK_LABEL_PERMISSIONS.UPDATE
84
- ]
85
- },
86
- updateMany: {
87
- level: 'permission',
88
- permissions: [
89
- _nestjsshared.TASK_LABEL_PERMISSIONS.UPDATE
90
- ]
91
- },
92
- delete: {
93
- level: 'permission',
94
- permissions: [
95
- _nestjsshared.TASK_LABEL_PERMISSIONS.DELETE
96
- ]
97
- }
98
- }
99
- }) {
100
- constructor(labelService){
101
- super(labelService), _define_property(this, "labelService", void 0), this.labelService = labelService;
102
- }
103
- };
104
- TaskLabelController = _ts_decorate([
105
- (0, _swagger.ApiTags)('Task Manager - Labels'),
106
- (0, _common.Controller)('task-manager/label'),
107
- _ts_param(0, (0, _common.Inject)(_tasklabelservice.TaskLabelService)),
108
- _ts_metadata("design:type", Function),
109
- _ts_metadata("design:paramtypes", [
110
- typeof _tasklabelservice.TaskLabelService === "undefined" ? Object : _tasklabelservice.TaskLabelService
111
- ])
112
- ], TaskLabelController);
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _tasklabelcontroller = require("./task-label.controller");
7
- function buildLabel(overrides = {}) {
8
- return {
9
- id: 'label-1',
10
- boardId: 'board-uuid-1',
11
- name: 'Bug',
12
- color: '#ff0000',
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('TaskLabelController', ()=>{
20
- let controller;
21
- let mockLabelService;
22
- beforeEach(()=>{
23
- mockLabelService = {
24
- insert: jest.fn(),
25
- findById: jest.fn(),
26
- getAll: jest.fn(),
27
- update: jest.fn(),
28
- delete: jest.fn()
29
- };
30
- controller = new _tasklabelcontroller.TaskLabelController(mockLabelService);
31
- });
32
- it('wires the injected service onto the generated controller base', ()=>{
33
- expect(controller.service).toBe(mockLabelService);
34
- });
35
- describe('insert', ()=>{
36
- it('creates a label and returns the mapped response', async ()=>{
37
- const user = (0, _loggedusermock.buildMockUser)();
38
- mockLabelService.insert.mockResolvedValue(buildLabel());
39
- const result = await controller.insert({
40
- boardId: 'board-uuid-1',
41
- name: 'Bug',
42
- color: '#ff0000'
43
- }, user);
44
- expect(mockLabelService.insert).toHaveBeenCalledWith({
45
- boardId: 'board-uuid-1',
46
- name: 'Bug',
47
- color: '#ff0000'
48
- }, user);
49
- expect(result.success).toBe(true);
50
- expect(result.data).toEqual(expect.objectContaining({
51
- id: 'label-1'
52
- }));
53
- });
54
- });
55
- describe('getAll', ()=>{
56
- it('paginates labels and maps the response list', async ()=>{
57
- mockLabelService.getAll.mockResolvedValue({
58
- data: [
59
- buildLabel()
60
- ],
61
- total: 1
62
- });
63
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
64
- expect(mockLabelService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
65
- expect(result.data).toHaveLength(1);
66
- });
67
- });
68
- describe('delete', ()=>{
69
- it('delegates soft-delete to the service', async ()=>{
70
- mockLabelService.delete.mockResolvedValue({
71
- count: 1
72
- });
73
- const result = await controller.delete({
74
- id: [
75
- 'label-1'
76
- ],
77
- type: 'delete'
78
- }, (0, _loggedusermock.buildMockUser)());
79
- expect(mockLabelService.delete).toHaveBeenCalledWith({
80
- id: [
81
- 'label-1'
82
- ],
83
- type: 'delete'
84
- }, (0, _loggedusermock.buildMockUser)());
85
- expect(result.success).toBe(true);
86
- });
87
- });
88
- });
@@ -1,158 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "TaskListController", {
6
- enumerable: true,
7
- get: function() {
8
- return TaskListController;
9
- }
10
- });
11
- const _nestjsshared = require("@flusys/nestjs-shared");
12
- const _classes = require("@flusys/nestjs-shared/classes");
13
- const _decorators = require("@flusys/nestjs-shared/decorators");
14
- const _dtos = require("@flusys/nestjs-shared/dtos");
15
- const _guards = require("@flusys/nestjs-shared/guards");
16
- const _common = require("@nestjs/common");
17
- const _swagger = require("@nestjs/swagger");
18
- const _config = require("../config");
19
- const _dtos1 = require("../dtos");
20
- const _taskboardgateway = require("../gateways/task-board.gateway");
21
- const _tasklistservice = require("../services/task-list.service");
22
- function _define_property(obj, key, value) {
23
- if (key in obj) {
24
- Object.defineProperty(obj, key, {
25
- value: value,
26
- enumerable: true,
27
- configurable: true,
28
- writable: true
29
- });
30
- } else {
31
- obj[key] = value;
32
- }
33
- return obj;
34
- }
35
- function _ts_decorate(decorators, target, key, desc) {
36
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
39
- return c > 3 && r && Object.defineProperty(target, key, r), r;
40
- }
41
- function _ts_metadata(k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- }
44
- function _ts_param(paramIndex, decorator) {
45
- return function(target, key) {
46
- decorator(target, key, paramIndex);
47
- };
48
- }
49
- let TaskListController = class TaskListController extends (0, _classes.createApiController)(_dtos1.CreateTaskListDto, _dtos1.UpdateTaskListDto, _dtos1.TaskListResponseDto, {
50
- entityName: 'task.list',
51
- enabledEndpoints: [
52
- 'insert',
53
- 'insertMany',
54
- 'getById',
55
- 'getAll',
56
- 'update',
57
- 'updateMany',
58
- 'delete'
59
- ],
60
- security: {
61
- insert: {
62
- level: 'permission',
63
- permissions: [
64
- _nestjsshared.TASK_LIST_PERMISSIONS.CREATE
65
- ]
66
- },
67
- insertMany: {
68
- level: 'permission',
69
- permissions: [
70
- _nestjsshared.TASK_LIST_PERMISSIONS.CREATE
71
- ]
72
- },
73
- getById: {
74
- level: 'permission',
75
- permissions: [
76
- _nestjsshared.TASK_LIST_PERMISSIONS.READ
77
- ]
78
- },
79
- getAll: {
80
- level: 'permission',
81
- permissions: [
82
- _nestjsshared.TASK_LIST_PERMISSIONS.READ
83
- ]
84
- },
85
- update: {
86
- level: 'permission',
87
- permissions: [
88
- _nestjsshared.TASK_LIST_PERMISSIONS.UPDATE
89
- ]
90
- },
91
- updateMany: {
92
- level: 'permission',
93
- permissions: [
94
- _nestjsshared.TASK_LIST_PERMISSIONS.UPDATE
95
- ]
96
- },
97
- delete: {
98
- level: 'permission',
99
- permissions: [
100
- _nestjsshared.TASK_LIST_PERMISSIONS.DELETE
101
- ]
102
- }
103
- }
104
- }) {
105
- async reorder(dto) {
106
- await this.listService.reorderLists(dto);
107
- this.gateway?.emitToBoardRoom(dto.boardId, {
108
- type: 'list:reordered',
109
- boardId: dto.boardId,
110
- payload: {
111
- orderedIds: dto.orderedIds
112
- }
113
- });
114
- return {
115
- success: true,
116
- message: 'Lists reordered',
117
- messageKey: _config.TASK_LIST_MESSAGES.REORDER_SUCCESS
118
- };
119
- }
120
- constructor(listService, gateway){
121
- super(listService), _define_property(this, "listService", void 0), _define_property(this, "gateway", void 0), this.listService = listService, this.gateway = gateway;
122
- }
123
- };
124
- _ts_decorate([
125
- (0, _common.Post)('reorder'),
126
- (0, _common.UseGuards)(_guards.JwtAuthGuard, _guards.PermissionGuard),
127
- (0, _swagger.ApiBearerAuth)(),
128
- (0, _common.HttpCode)(_common.HttpStatus.OK),
129
- (0, _decorators.RequirePermission)(_nestjsshared.TASK_LIST_PERMISSIONS.UPDATE),
130
- (0, _swagger.ApiOperation)({
131
- summary: 'Reorder lists within a board'
132
- }),
133
- (0, _swagger.ApiBody)({
134
- type: _dtos1.ReorderTaskListsDto
135
- }),
136
- (0, _swagger.ApiResponse)({
137
- status: 200,
138
- type: _dtos.MessageResponseDto
139
- }),
140
- _ts_param(0, (0, _common.Body)()),
141
- _ts_metadata("design:type", Function),
142
- _ts_metadata("design:paramtypes", [
143
- typeof _dtos1.ReorderTaskListsDto === "undefined" ? Object : _dtos1.ReorderTaskListsDto
144
- ]),
145
- _ts_metadata("design:returntype", Promise)
146
- ], TaskListController.prototype, "reorder", null);
147
- TaskListController = _ts_decorate([
148
- (0, _swagger.ApiTags)('Task Manager - Lists'),
149
- (0, _common.Controller)('task-manager/list'),
150
- _ts_param(0, (0, _common.Inject)(_tasklistservice.TaskListService)),
151
- _ts_param(1, (0, _common.Optional)()),
152
- _ts_param(1, (0, _common.Inject)(_taskboardgateway.TaskBoardGateway)),
153
- _ts_metadata("design:type", Function),
154
- _ts_metadata("design:paramtypes", [
155
- typeof _tasklistservice.TaskListService === "undefined" ? Object : _tasklistservice.TaskListService,
156
- typeof _taskboardgateway.TaskBoardGateway === "undefined" ? Object : _taskboardgateway.TaskBoardGateway
157
- ])
158
- ], TaskListController);
@@ -1,112 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _tasklistcontroller = require("./task-list.controller");
7
- function buildList(overrides = {}) {
8
- return {
9
- id: 'list-uuid-1',
10
- boardId: 'board-uuid-1',
11
- name: 'To Do',
12
- position: 0,
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('TaskListController', ()=>{
20
- let controller;
21
- let mockListService;
22
- let mockGateway;
23
- beforeEach(()=>{
24
- mockListService = {
25
- insert: jest.fn(),
26
- findById: jest.fn(),
27
- getAll: jest.fn(),
28
- update: jest.fn(),
29
- delete: jest.fn(),
30
- reorderLists: jest.fn()
31
- };
32
- mockGateway = {
33
- emitToBoardRoom: jest.fn()
34
- };
35
- controller = new _tasklistcontroller.TaskListController(mockListService, mockGateway);
36
- });
37
- it('wires the injected service onto the generated controller base', ()=>{
38
- expect(controller.service).toBe(mockListService);
39
- });
40
- describe('insert', ()=>{
41
- it('creates a list and returns the mapped response', async ()=>{
42
- const user = (0, _loggedusermock.buildMockUser)();
43
- mockListService.insert.mockResolvedValue(buildList());
44
- const result = await controller.insert({
45
- boardId: 'board-uuid-1',
46
- name: 'To Do'
47
- }, user);
48
- expect(mockListService.insert).toHaveBeenCalledWith({
49
- boardId: 'board-uuid-1',
50
- name: 'To Do'
51
- }, user);
52
- expect(result.success).toBe(true);
53
- expect(result.data).toEqual(expect.objectContaining({
54
- id: 'list-uuid-1'
55
- }));
56
- });
57
- });
58
- describe('getAll', ()=>{
59
- it('paginates lists and maps the response list', async ()=>{
60
- mockListService.getAll.mockResolvedValue({
61
- data: [
62
- buildList()
63
- ],
64
- total: 1
65
- });
66
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
67
- expect(mockListService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
68
- expect(result.data).toHaveLength(1);
69
- });
70
- });
71
- describe('reorder', ()=>{
72
- it('reorders lists and broadcasts a list:reordered event to the board room', async ()=>{
73
- mockListService.reorderLists.mockResolvedValue(undefined);
74
- const result = await controller.reorder({
75
- boardId: 'board-uuid-1',
76
- orderedIds: [
77
- 'list-2',
78
- 'list-1'
79
- ]
80
- });
81
- expect(mockListService.reorderLists).toHaveBeenCalledWith({
82
- boardId: 'board-uuid-1',
83
- orderedIds: [
84
- 'list-2',
85
- 'list-1'
86
- ]
87
- });
88
- expect(mockGateway.emitToBoardRoom).toHaveBeenCalledWith('board-uuid-1', expect.objectContaining({
89
- type: 'list:reordered',
90
- boardId: 'board-uuid-1',
91
- payload: {
92
- orderedIds: [
93
- 'list-2',
94
- 'list-1'
95
- ]
96
- }
97
- }));
98
- expect(result.success).toBe(true);
99
- });
100
- it('still succeeds when no gateway is wired (optional dependency)', async ()=>{
101
- const controllerNoGateway = new _tasklistcontroller.TaskListController(mockListService, undefined);
102
- mockListService.reorderLists.mockResolvedValue(undefined);
103
- const result = await controllerNoGateway.reorder({
104
- boardId: 'board-uuid-1',
105
- orderedIds: [
106
- 'list-1'
107
- ]
108
- });
109
- expect(result.success).toBe(true);
110
- });
111
- });
112
- });