@flusys/nestjs-task-manager 7.1.0 → 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.
- 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,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
|
-
});
|