@flusys/nestjs-task-manager 7.1.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/index.d.ts +3 -3
- package/controllers/index.d.ts +5 -5
- package/controllers/task-board.controller.d.ts +3 -3
- package/controllers/task-comment.controller.d.ts +2 -2
- package/controllers/task-label.controller.d.ts +2 -2
- package/controllers/task-list.controller.d.ts +3 -3
- package/controllers/task.controller.d.ts +4 -4
- package/docs/index.d.ts +1 -1
- package/docs/task-manager-swagger.config.d.ts +1 -1
- package/dtos/index.d.ts +5 -5
- package/dtos/task-board.dto.d.ts +1 -1
- package/dtos/task.dto.d.ts +2 -2
- package/entities/index.d.ts +19 -19
- package/entities/task-board-with-company.entity.d.ts +1 -1
- package/fesm/234.js +1393 -0
- package/fesm/431.js +981 -0
- package/fesm/827.js +1054 -0
- package/fesm/988.js +881 -0
- package/fesm/config/index.js +156 -3
- package/fesm/controllers/index.js +21 -5
- package/fesm/docs/index.js +58 -1
- package/fesm/dtos/index.js +280 -5
- package/fesm/entities/index.js +26 -46
- package/fesm/gateways/index.js +288 -1
- package/fesm/index.js +440 -9
- package/fesm/interfaces/index.js +16 -2
- package/fesm/modules/index.js +210 -1
- package/fesm/runtime.js +85 -0
- package/fesm/services/index.js +53 -8
- package/gateways/index.d.ts +1 -1
- package/gateways/task-board.gateway.d.ts +3 -3
- package/index.d.ts +9 -9
- package/interfaces/index.d.ts +2 -2
- package/interfaces/task-manager-module.interface.d.ts +3 -3
- package/interfaces/task.interface.d.ts +2 -2
- package/modules/index.d.ts +1 -1
- package/modules/task-manager.module.d.ts +2 -2
- package/package.json +26 -36
- package/services/index.d.ts +8 -8
- package/services/task-activity.service.d.ts +1 -1
- package/services/task-board.service.d.ts +5 -5
- package/services/task-comment.service.d.ts +4 -4
- package/services/task-label.service.d.ts +4 -4
- package/services/task-list.service.d.ts +4 -4
- package/services/task-manager-config.service.d.ts +3 -3
- package/services/task-manager-datasource.provider.d.ts +3 -3
- package/services/task.service.d.ts +7 -7
- package/cjs/config/event-actions.js +0 -37
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -92
- package/cjs/config/task-manager.constants.js +0 -11
- package/cjs/controllers/index.js +0 -22
- package/cjs/controllers/task-board.controller.js +0 -219
- package/cjs/controllers/task-board.controller.spec.js +0 -132
- package/cjs/controllers/task-comment.controller.js +0 -103
- package/cjs/controllers/task-comment.controller.spec.js +0 -86
- package/cjs/controllers/task-label.controller.js +0 -112
- package/cjs/controllers/task-label.controller.spec.js +0 -88
- package/cjs/controllers/task-list.controller.js +0 -158
- package/cjs/controllers/task-list.controller.spec.js +0 -112
- package/cjs/controllers/task.controller.js +0 -199
- package/cjs/controllers/task.controller.spec.js +0 -131
- package/cjs/docs/index.js +0 -18
- package/cjs/docs/task-manager-swagger.config.js +0 -43
- package/cjs/docs/task-manager-swagger.config.spec.js +0 -28
- package/cjs/dtos/index.js +0 -22
- package/cjs/dtos/task-board.dto.js +0 -310
- package/cjs/dtos/task-comment.dto.js +0 -131
- package/cjs/dtos/task-label.dto.js +0 -120
- package/cjs/dtos/task-list.dto.js +0 -198
- package/cjs/dtos/task.dto.js +0 -367
- package/cjs/entities/index.js +0 -72
- package/cjs/entities/index.spec.js +0 -30
- package/cjs/entities/task-activity.entity.js +0 -98
- package/cjs/entities/task-assignee.entity.js +0 -67
- package/cjs/entities/task-board-member.entity.js +0 -94
- package/cjs/entities/task-board-with-company.entity.js +0 -57
- package/cjs/entities/task-board.entity.js +0 -88
- package/cjs/entities/task-comment.entity.js +0 -80
- package/cjs/entities/task-label.entity.js +0 -72
- package/cjs/entities/task-list.entity.js +0 -104
- package/cjs/entities/task-task-label.entity.js +0 -67
- package/cjs/entities/task.entity.js +0 -151
- package/cjs/gateways/index.js +0 -18
- package/cjs/gateways/task-board.gateway.js +0 -167
- package/cjs/gateways/task-board.gateway.spec.js +0 -243
- package/cjs/index.js +0 -26
- package/cjs/interfaces/index.js +0 -19
- package/cjs/interfaces/task-manager-module.interface.js +0 -4
- package/cjs/interfaces/task.interface.js +0 -4
- package/cjs/modules/index.js +0 -18
- package/cjs/modules/task-manager.module.js +0 -135
- package/cjs/modules/task-manager.module.spec.js +0 -144
- package/cjs/services/index.js +0 -25
- package/cjs/services/task-activity.service.js +0 -76
- package/cjs/services/task-activity.service.spec.js +0 -125
- package/cjs/services/task-board.service.js +0 -247
- package/cjs/services/task-board.service.spec.js +0 -465
- package/cjs/services/task-comment.service.js +0 -103
- package/cjs/services/task-comment.service.spec.js +0 -160
- package/cjs/services/task-label.service.js +0 -97
- package/cjs/services/task-label.service.spec.js +0 -138
- package/cjs/services/task-list.service.js +0 -130
- package/cjs/services/task-list.service.spec.js +0 -284
- package/cjs/services/task-manager-config.service.js +0 -69
- package/cjs/services/task-manager-config.service.spec.js +0 -98
- package/cjs/services/task-manager-datasource.provider.js +0 -84
- package/cjs/services/task-manager-datasource.provider.spec.js +0 -131
- package/cjs/services/task.service.js +0 -398
- package/cjs/services/task.service.spec.js +0 -700
- package/fesm/config/event-actions.js +0 -16
- package/fesm/config/message-keys.js +0 -65
- package/fesm/config/task-manager.constants.js +0 -1
- package/fesm/controllers/task-board.controller.js +0 -209
- package/fesm/controllers/task-board.controller.spec.js +0 -128
- package/fesm/controllers/task-comment.controller.js +0 -93
- package/fesm/controllers/task-comment.controller.spec.js +0 -82
- package/fesm/controllers/task-label.controller.js +0 -102
- package/fesm/controllers/task-label.controller.spec.js +0 -84
- package/fesm/controllers/task-list.controller.js +0 -148
- package/fesm/controllers/task-list.controller.spec.js +0 -108
- package/fesm/controllers/task.controller.js +0 -189
- package/fesm/controllers/task.controller.spec.js +0 -127
- package/fesm/docs/task-manager-swagger.config.js +0 -33
- package/fesm/docs/task-manager-swagger.config.spec.js +0 -24
- package/fesm/dtos/task-board.dto.js +0 -277
- package/fesm/dtos/task-comment.dto.js +0 -110
- package/fesm/dtos/task-label.dto.js +0 -99
- package/fesm/dtos/task-list.dto.js +0 -174
- package/fesm/dtos/task.dto.js +0 -337
- package/fesm/entities/index.spec.js +0 -26
- package/fesm/entities/task-activity.entity.js +0 -88
- package/fesm/entities/task-assignee.entity.js +0 -57
- package/fesm/entities/task-board-member.entity.js +0 -76
- package/fesm/entities/task-board-with-company.entity.js +0 -47
- package/fesm/entities/task-board.entity.js +0 -78
- package/fesm/entities/task-comment.entity.js +0 -70
- package/fesm/entities/task-label.entity.js +0 -62
- package/fesm/entities/task-list.entity.js +0 -94
- package/fesm/entities/task-task-label.entity.js +0 -57
- package/fesm/entities/task.entity.js +0 -133
- package/fesm/gateways/task-board.gateway.js +0 -157
- package/fesm/gateways/task-board.gateway.spec.js +0 -239
- package/fesm/interfaces/task-manager-module.interface.js +0 -1
- package/fesm/interfaces/task.interface.js +0 -1
- package/fesm/modules/task-manager.module.js +0 -125
- package/fesm/modules/task-manager.module.spec.js +0 -140
- package/fesm/services/task-activity.service.js +0 -66
- package/fesm/services/task-activity.service.spec.js +0 -121
- package/fesm/services/task-board.service.js +0 -237
- package/fesm/services/task-board.service.spec.js +0 -461
- package/fesm/services/task-comment.service.js +0 -93
- package/fesm/services/task-comment.service.spec.js +0 -156
- package/fesm/services/task-label.service.js +0 -87
- package/fesm/services/task-label.service.spec.js +0 -134
- package/fesm/services/task-list.service.js +0 -120
- package/fesm/services/task-list.service.spec.js +0 -280
- package/fesm/services/task-manager-config.service.js +0 -59
- package/fesm/services/task-manager-config.service.spec.js +0 -94
- package/fesm/services/task-manager-datasource.provider.js +0 -74
- package/fesm/services/task-manager-datasource.provider.spec.js +0 -127
- package/fesm/services/task.service.js +0 -388
- package/fesm/services/task.service.spec.js +0 -696
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "TaskController", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return TaskController;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _classes = require("@flusys/nestjs-shared/classes");
|
|
12
|
-
const _decorators = require("@flusys/nestjs-shared/decorators");
|
|
13
|
-
const _guards = require("@flusys/nestjs-shared/guards");
|
|
14
|
-
const _interfaces = require("@flusys/nestjs-shared/interfaces");
|
|
15
|
-
const _common = require("@nestjs/common");
|
|
16
|
-
const _swagger = require("@nestjs/swagger");
|
|
17
|
-
const _classtransformer = require("class-transformer");
|
|
18
|
-
const _nestjsshared = require("@flusys/nestjs-shared");
|
|
19
|
-
const _config = require("../config");
|
|
20
|
-
const _dtos = require("../dtos");
|
|
21
|
-
const _taskboardgateway = require("../gateways/task-board.gateway");
|
|
22
|
-
const _taskservice = require("../services/task.service");
|
|
23
|
-
function _define_property(obj, key, value) {
|
|
24
|
-
if (key in obj) {
|
|
25
|
-
Object.defineProperty(obj, key, {
|
|
26
|
-
value: value,
|
|
27
|
-
enumerable: true,
|
|
28
|
-
configurable: true,
|
|
29
|
-
writable: true
|
|
30
|
-
});
|
|
31
|
-
} else {
|
|
32
|
-
obj[key] = value;
|
|
33
|
-
}
|
|
34
|
-
return obj;
|
|
35
|
-
}
|
|
36
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
37
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
38
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
39
|
-
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;
|
|
40
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
41
|
-
}
|
|
42
|
-
function _ts_metadata(k, v) {
|
|
43
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
44
|
-
}
|
|
45
|
-
function _ts_param(paramIndex, decorator) {
|
|
46
|
-
return function(target, key) {
|
|
47
|
-
decorator(target, key, paramIndex);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
let TaskController = class TaskController extends (0, _classes.createApiController)(_dtos.CreateTaskDto, _dtos.UpdateTaskDto, _dtos.TaskResponseDto, {
|
|
51
|
-
entityName: 'task',
|
|
52
|
-
enabledEndpoints: [
|
|
53
|
-
'insert',
|
|
54
|
-
'insertMany',
|
|
55
|
-
'getById',
|
|
56
|
-
'getAll',
|
|
57
|
-
'update',
|
|
58
|
-
'updateMany',
|
|
59
|
-
'delete'
|
|
60
|
-
],
|
|
61
|
-
security: {
|
|
62
|
-
insert: {
|
|
63
|
-
level: 'permission',
|
|
64
|
-
permissions: [
|
|
65
|
-
_nestjsshared.TASK_PERMISSIONS.CREATE
|
|
66
|
-
]
|
|
67
|
-
},
|
|
68
|
-
insertMany: {
|
|
69
|
-
level: 'permission',
|
|
70
|
-
permissions: [
|
|
71
|
-
_nestjsshared.TASK_PERMISSIONS.CREATE
|
|
72
|
-
]
|
|
73
|
-
},
|
|
74
|
-
getById: {
|
|
75
|
-
level: 'permission',
|
|
76
|
-
permissions: [
|
|
77
|
-
_nestjsshared.TASK_PERMISSIONS.READ
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
getAll: {
|
|
81
|
-
level: 'permission',
|
|
82
|
-
permissions: [
|
|
83
|
-
_nestjsshared.TASK_PERMISSIONS.READ
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
update: {
|
|
87
|
-
level: 'permission',
|
|
88
|
-
permissions: [
|
|
89
|
-
_nestjsshared.TASK_PERMISSIONS.UPDATE
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
|
-
updateMany: {
|
|
93
|
-
level: 'permission',
|
|
94
|
-
permissions: [
|
|
95
|
-
_nestjsshared.TASK_PERMISSIONS.UPDATE
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
delete: {
|
|
99
|
-
level: 'permission',
|
|
100
|
-
permissions: [
|
|
101
|
-
_nestjsshared.TASK_PERMISSIONS.DELETE
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}) {
|
|
106
|
-
async moveTask(dto, user) {
|
|
107
|
-
const task = await this.taskService.moveTask(dto, user);
|
|
108
|
-
const data = (0, _classtransformer.plainToInstance)(_dtos.TaskResponseDto, task, {
|
|
109
|
-
excludeExtraneousValues: true
|
|
110
|
-
});
|
|
111
|
-
this.gateway?.emitToBoardRoom(task.boardId, {
|
|
112
|
-
type: 'task:moved',
|
|
113
|
-
boardId: task.boardId,
|
|
114
|
-
payload: data
|
|
115
|
-
});
|
|
116
|
-
return {
|
|
117
|
-
success: true,
|
|
118
|
-
message: 'Task moved',
|
|
119
|
-
messageKey: _config.TASK_MESSAGES.MOVE_SUCCESS,
|
|
120
|
-
data
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
async assignTask(dto, user) {
|
|
124
|
-
const task = await this.taskService.assignTask(dto, user);
|
|
125
|
-
const data = (0, _classtransformer.plainToInstance)(_dtos.TaskResponseDto, task, {
|
|
126
|
-
excludeExtraneousValues: true
|
|
127
|
-
});
|
|
128
|
-
this.gateway?.emitToBoardRoom(task.boardId, {
|
|
129
|
-
type: 'task:updated',
|
|
130
|
-
boardId: task.boardId,
|
|
131
|
-
payload: data
|
|
132
|
-
});
|
|
133
|
-
return {
|
|
134
|
-
success: true,
|
|
135
|
-
message: 'Task assigned',
|
|
136
|
-
messageKey: _config.TASK_MESSAGES.ASSIGN_SUCCESS,
|
|
137
|
-
data
|
|
138
|
-
};
|
|
139
|
-
}
|
|
140
|
-
constructor(taskService, gateway){
|
|
141
|
-
super(taskService), _define_property(this, "taskService", void 0), _define_property(this, "gateway", void 0), this.taskService = taskService, this.gateway = gateway;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
_ts_decorate([
|
|
145
|
-
(0, _common.Post)('move'),
|
|
146
|
-
(0, _common.UseGuards)(_guards.JwtAuthGuard, _guards.PermissionGuard),
|
|
147
|
-
(0, _swagger.ApiBearerAuth)(),
|
|
148
|
-
(0, _common.HttpCode)(_common.HttpStatus.OK),
|
|
149
|
-
(0, _decorators.RequirePermission)(_nestjsshared.TASK_PERMISSIONS.MOVE),
|
|
150
|
-
(0, _swagger.ApiOperation)({
|
|
151
|
-
summary: 'Move task to another list'
|
|
152
|
-
}),
|
|
153
|
-
(0, _swagger.ApiBody)({
|
|
154
|
-
type: _dtos.MoveTaskDto
|
|
155
|
-
}),
|
|
156
|
-
(0, _decorators.ApiResponseDto)(_dtos.TaskResponseDto),
|
|
157
|
-
_ts_param(0, (0, _common.Body)()),
|
|
158
|
-
_ts_param(1, (0, _decorators.CurrentUser)()),
|
|
159
|
-
_ts_metadata("design:type", Function),
|
|
160
|
-
_ts_metadata("design:paramtypes", [
|
|
161
|
-
typeof _dtos.MoveTaskDto === "undefined" ? Object : _dtos.MoveTaskDto,
|
|
162
|
-
typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
|
|
163
|
-
]),
|
|
164
|
-
_ts_metadata("design:returntype", Promise)
|
|
165
|
-
], TaskController.prototype, "moveTask", null);
|
|
166
|
-
_ts_decorate([
|
|
167
|
-
(0, _common.Post)('assign'),
|
|
168
|
-
(0, _common.UseGuards)(_guards.JwtAuthGuard, _guards.PermissionGuard),
|
|
169
|
-
(0, _swagger.ApiBearerAuth)(),
|
|
170
|
-
(0, _common.HttpCode)(_common.HttpStatus.OK),
|
|
171
|
-
(0, _decorators.RequirePermission)(_nestjsshared.TASK_PERMISSIONS.ASSIGN),
|
|
172
|
-
(0, _swagger.ApiOperation)({
|
|
173
|
-
summary: 'Assign task to a board member'
|
|
174
|
-
}),
|
|
175
|
-
(0, _swagger.ApiBody)({
|
|
176
|
-
type: _dtos.AssignTaskDto
|
|
177
|
-
}),
|
|
178
|
-
(0, _decorators.ApiResponseDto)(_dtos.TaskResponseDto),
|
|
179
|
-
_ts_param(0, (0, _common.Body)()),
|
|
180
|
-
_ts_param(1, (0, _decorators.CurrentUser)()),
|
|
181
|
-
_ts_metadata("design:type", Function),
|
|
182
|
-
_ts_metadata("design:paramtypes", [
|
|
183
|
-
typeof _dtos.AssignTaskDto === "undefined" ? Object : _dtos.AssignTaskDto,
|
|
184
|
-
typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
|
|
185
|
-
]),
|
|
186
|
-
_ts_metadata("design:returntype", Promise)
|
|
187
|
-
], TaskController.prototype, "assignTask", null);
|
|
188
|
-
TaskController = _ts_decorate([
|
|
189
|
-
(0, _swagger.ApiTags)('Task Manager - Tasks'),
|
|
190
|
-
(0, _common.Controller)('task-manager/task'),
|
|
191
|
-
_ts_param(0, (0, _common.Inject)(_taskservice.TaskService)),
|
|
192
|
-
_ts_param(1, (0, _common.Optional)()),
|
|
193
|
-
_ts_param(1, (0, _common.Inject)(_taskboardgateway.TaskBoardGateway)),
|
|
194
|
-
_ts_metadata("design:type", Function),
|
|
195
|
-
_ts_metadata("design:paramtypes", [
|
|
196
|
-
typeof _taskservice.TaskService === "undefined" ? Object : _taskservice.TaskService,
|
|
197
|
-
typeof _taskboardgateway.TaskBoardGateway === "undefined" ? Object : _taskboardgateway.TaskBoardGateway
|
|
198
|
-
])
|
|
199
|
-
], TaskController);
|
|
@@ -1,131 +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 _entities = require("../entities");
|
|
7
|
-
const _taskcontroller = require("./task.controller");
|
|
8
|
-
function buildTask(overrides = {}) {
|
|
9
|
-
return {
|
|
10
|
-
id: 'task-uuid-1',
|
|
11
|
-
boardId: 'board-uuid-1',
|
|
12
|
-
listId: 'list-uuid-1',
|
|
13
|
-
title: 'Fix bug',
|
|
14
|
-
description: null,
|
|
15
|
-
priority: _entities.TaskPriority.MEDIUM,
|
|
16
|
-
dueDate: null,
|
|
17
|
-
position: 0,
|
|
18
|
-
assignees: [],
|
|
19
|
-
reporterId: 'user-uuid-1',
|
|
20
|
-
parentTaskId: null,
|
|
21
|
-
estimatedHours: null,
|
|
22
|
-
createdAt: new Date(),
|
|
23
|
-
updatedAt: new Date(),
|
|
24
|
-
...overrides
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
describe('TaskController', ()=>{
|
|
28
|
-
let controller;
|
|
29
|
-
let mockTaskService;
|
|
30
|
-
let mockGateway;
|
|
31
|
-
beforeEach(async ()=>{
|
|
32
|
-
mockTaskService = {
|
|
33
|
-
moveTask: jest.fn(),
|
|
34
|
-
assignTask: jest.fn(),
|
|
35
|
-
insert: jest.fn(),
|
|
36
|
-
update: jest.fn(),
|
|
37
|
-
getAll: jest.fn(),
|
|
38
|
-
findById: jest.fn(),
|
|
39
|
-
delete: jest.fn()
|
|
40
|
-
};
|
|
41
|
-
mockGateway = {
|
|
42
|
-
emitToBoardRoom: jest.fn()
|
|
43
|
-
};
|
|
44
|
-
controller = new _taskcontroller.TaskController(mockTaskService, mockGateway);
|
|
45
|
-
});
|
|
46
|
-
describe('moveTask', ()=>{
|
|
47
|
-
it('moves the task and broadcasts a task:moved event to the board room', async ()=>{
|
|
48
|
-
const task = buildTask({
|
|
49
|
-
listId: 'list-new',
|
|
50
|
-
position: 2
|
|
51
|
-
});
|
|
52
|
-
mockTaskService.moveTask.mockResolvedValue(task);
|
|
53
|
-
const user = (0, _loggedusermock.buildMockUser)();
|
|
54
|
-
const result = await controller.moveTask({
|
|
55
|
-
taskId: 'task-uuid-1',
|
|
56
|
-
targetListId: 'list-new',
|
|
57
|
-
position: 2
|
|
58
|
-
}, user);
|
|
59
|
-
expect(mockTaskService.moveTask).toHaveBeenCalledWith({
|
|
60
|
-
taskId: 'task-uuid-1',
|
|
61
|
-
targetListId: 'list-new',
|
|
62
|
-
position: 2
|
|
63
|
-
}, user);
|
|
64
|
-
expect(result.success).toBe(true);
|
|
65
|
-
expect(result.data).toEqual(expect.objectContaining({
|
|
66
|
-
id: 'task-uuid-1',
|
|
67
|
-
listId: 'list-new'
|
|
68
|
-
}));
|
|
69
|
-
expect(mockGateway.emitToBoardRoom).toHaveBeenCalledWith('board-uuid-1', expect.objectContaining({
|
|
70
|
-
type: 'task:moved',
|
|
71
|
-
boardId: 'board-uuid-1'
|
|
72
|
-
}));
|
|
73
|
-
});
|
|
74
|
-
it('still returns successfully when no gateway is wired (optional dependency)', async ()=>{
|
|
75
|
-
const controllerNoGateway = new _taskcontroller.TaskController(mockTaskService, undefined);
|
|
76
|
-
mockTaskService.moveTask.mockResolvedValue(buildTask());
|
|
77
|
-
const result = await controllerNoGateway.moveTask({
|
|
78
|
-
taskId: 'task-uuid-1',
|
|
79
|
-
targetListId: 'list-1'
|
|
80
|
-
}, (0, _loggedusermock.buildMockUser)());
|
|
81
|
-
expect(result.success).toBe(true);
|
|
82
|
-
});
|
|
83
|
-
it('propagates a NotFoundException from the service when the task does not exist', async ()=>{
|
|
84
|
-
mockTaskService.moveTask.mockRejectedValue(new Error('Task not found'));
|
|
85
|
-
await expect(controller.moveTask({
|
|
86
|
-
taskId: 'missing',
|
|
87
|
-
targetListId: 'list-1'
|
|
88
|
-
}, (0, _loggedusermock.buildMockUser)())).rejects.toThrow('Task not found');
|
|
89
|
-
expect(mockGateway.emitToBoardRoom).not.toHaveBeenCalled();
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
describe('assignTask', ()=>{
|
|
93
|
-
it('assigns the task and broadcasts a task:updated event to the board room', async ()=>{
|
|
94
|
-
const task = buildTask({
|
|
95
|
-
assignees: [
|
|
96
|
-
{
|
|
97
|
-
userId: 'user-2',
|
|
98
|
-
userName: 'Bob'
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
});
|
|
102
|
-
mockTaskService.assignTask.mockResolvedValue(task);
|
|
103
|
-
const user = (0, _loggedusermock.buildMockUser)();
|
|
104
|
-
const result = await controller.assignTask({
|
|
105
|
-
taskId: 'task-uuid-1',
|
|
106
|
-
assigneeIds: [
|
|
107
|
-
'user-2'
|
|
108
|
-
]
|
|
109
|
-
}, user);
|
|
110
|
-
expect(mockTaskService.assignTask).toHaveBeenCalledWith({
|
|
111
|
-
taskId: 'task-uuid-1',
|
|
112
|
-
assigneeIds: [
|
|
113
|
-
'user-2'
|
|
114
|
-
]
|
|
115
|
-
}, user);
|
|
116
|
-
expect(result.success).toBe(true);
|
|
117
|
-
expect(mockGateway.emitToBoardRoom).toHaveBeenCalledWith('board-uuid-1', expect.objectContaining({
|
|
118
|
-
type: 'task:updated'
|
|
119
|
-
}));
|
|
120
|
-
});
|
|
121
|
-
it('propagates a BadRequestException when an assignee is not a board member', async ()=>{
|
|
122
|
-
mockTaskService.assignTask.mockRejectedValue(new Error('Assignee is not a board member'));
|
|
123
|
-
await expect(controller.assignTask({
|
|
124
|
-
taskId: 'task-uuid-1',
|
|
125
|
-
assigneeIds: [
|
|
126
|
-
'stranger'
|
|
127
|
-
]
|
|
128
|
-
}, (0, _loggedusermock.buildMockUser)())).rejects.toThrow('Assignee is not a board member');
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
});
|
package/cjs/docs/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./task-manager-swagger.config"), exports);
|
|
6
|
-
function _export_star(from, to) {
|
|
7
|
-
Object.keys(from).forEach(function(k) {
|
|
8
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
9
|
-
Object.defineProperty(to, k, {
|
|
10
|
-
enumerable: true,
|
|
11
|
-
get: function() {
|
|
12
|
-
return from[k];
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
return from;
|
|
18
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "taskManagerSwaggerConfig", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return taskManagerSwaggerConfig;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
function taskManagerSwaggerConfig() {
|
|
12
|
-
return {
|
|
13
|
-
title: 'Task Manager API',
|
|
14
|
-
description: `
|
|
15
|
-
## Task Manager API
|
|
16
|
-
|
|
17
|
-
Manages kanban boards, task lists, tasks, labels, comments, and real-time board collaboration.
|
|
18
|
-
|
|
19
|
-
### Features
|
|
20
|
-
- Board management with member access control
|
|
21
|
-
- Drag-and-drop task lists with position ordering
|
|
22
|
-
- Tasks with priority, due date, assignee, and label support
|
|
23
|
-
- Label assignment via junction table (many-to-many)
|
|
24
|
-
- Task comments and activity log
|
|
25
|
-
- Real-time updates via WebSocket (Socket.IO)
|
|
26
|
-
|
|
27
|
-
### Endpoints
|
|
28
|
-
|
|
29
|
-
- \`POST /task-manager/board/*\` — Board CRUD + member management
|
|
30
|
-
|
|
31
|
-
- \`POST /task-manager/list/*\` — List CRUD + reorder
|
|
32
|
-
|
|
33
|
-
- \`POST /task-manager/task/*\` — Task CRUD + move + assign
|
|
34
|
-
|
|
35
|
-
- \`POST /task-manager/label/*\` — Label CRUD
|
|
36
|
-
|
|
37
|
-
- \`POST /task-manager/comment/*\` — Comment CRUD
|
|
38
|
-
`,
|
|
39
|
-
version: '1.0',
|
|
40
|
-
path: 'api/docs/task-manager',
|
|
41
|
-
bearerAuth: true
|
|
42
|
-
};
|
|
43
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
const _taskmanagerswaggerconfig = require("./task-manager-swagger.config");
|
|
6
|
-
describe('taskManagerSwaggerConfig', ()=>{
|
|
7
|
-
it('should build a static swagger config with the expected identity fields', ()=>{
|
|
8
|
-
const config = (0, _taskmanagerswaggerconfig.taskManagerSwaggerConfig)();
|
|
9
|
-
expect(config.title).toBe('Task Manager API');
|
|
10
|
-
expect(config.path).toBe('api/docs/task-manager');
|
|
11
|
-
expect(config.version).toBe('1.0');
|
|
12
|
-
expect(config.bearerAuth).toBe(true);
|
|
13
|
-
});
|
|
14
|
-
it('should describe every top-level resource endpoint group', ()=>{
|
|
15
|
-
const config = (0, _taskmanagerswaggerconfig.taskManagerSwaggerConfig)();
|
|
16
|
-
expect(config.description).toContain('/task-manager/board/*');
|
|
17
|
-
expect(config.description).toContain('/task-manager/list/*');
|
|
18
|
-
expect(config.description).toContain('/task-manager/task/*');
|
|
19
|
-
expect(config.description).toContain('/task-manager/label/*');
|
|
20
|
-
expect(config.description).toContain('/task-manager/comment/*');
|
|
21
|
-
});
|
|
22
|
-
it('should return a fresh object on every call rather than a shared mutable singleton', ()=>{
|
|
23
|
-
const first = (0, _taskmanagerswaggerconfig.taskManagerSwaggerConfig)();
|
|
24
|
-
const second = (0, _taskmanagerswaggerconfig.taskManagerSwaggerConfig)();
|
|
25
|
-
expect(first).not.toBe(second);
|
|
26
|
-
expect(first).toEqual(second);
|
|
27
|
-
});
|
|
28
|
-
});
|
package/cjs/dtos/index.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
_export_star(require("./task-board.dto"), exports);
|
|
6
|
-
_export_star(require("./task-list.dto"), exports);
|
|
7
|
-
_export_star(require("./task.dto"), exports);
|
|
8
|
-
_export_star(require("./task-label.dto"), exports);
|
|
9
|
-
_export_star(require("./task-comment.dto"), exports);
|
|
10
|
-
function _export_star(from, to) {
|
|
11
|
-
Object.keys(from).forEach(function(k) {
|
|
12
|
-
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
13
|
-
Object.defineProperty(to, k, {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function() {
|
|
16
|
-
return from[k];
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
return from;
|
|
22
|
-
}
|