@steedos-labs/content-compliance 0.8.8 → 0.8.9
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/dist/index.js +1 -1
- package/lib/actions/bypassApproval.js +18 -0
- package/lib/actions/bypassApproval.js.map +1 -1
- package/lib/actions/bypassMaterial.js +12 -0
- package/lib/actions/bypassMaterial.js.map +1 -1
- package/lib/index.js +128 -0
- package/lib/index.js.map +1 -1
- package/lib/methods/AI.d.ts +6 -0
- package/lib/methods/AI.js +116 -15
- package/lib/methods/AI.js.map +1 -1
- package/lib/methods/__tests__/plsReview.test.d.ts +1 -0
- package/lib/methods/__tests__/plsReview.test.js +428 -0
- package/lib/methods/__tests__/plsReview.test.js.map +1 -0
- package/lib/methods/__tests__/postponeReview.test.js +21 -0
- package/lib/methods/__tests__/postponeReview.test.js.map +1 -1
- package/lib/methods/__tests__/qcParallelReview.test.d.ts +1 -0
- package/lib/methods/__tests__/qcParallelReview.test.js +53 -0
- package/lib/methods/__tests__/qcParallelReview.test.js.map +1 -0
- package/lib/methods/__tests__/qcPreReview.test.d.ts +1 -0
- package/lib/methods/__tests__/qcPreReview.test.js +65 -0
- package/lib/methods/__tests__/qcPreReview.test.js.map +1 -0
- package/lib/methods/approval_engine.d.ts +4 -0
- package/lib/methods/approval_engine.js +388 -221
- package/lib/methods/approval_engine.js.map +1 -1
- package/lib/methods/consts.d.ts +35 -0
- package/lib/methods/consts.js +2 -0
- package/lib/methods/consts.js.map +1 -1
- package/lib/methods/material.js +13 -0
- package/lib/methods/material.js.map +1 -1
- package/lib/methods/pls.d.ts +31 -0
- package/lib/methods/pls.js +429 -130
- package/lib/methods/pls.js.map +1 -1
- package/lib/pages/__tests__/aiReviewCardStyles.test.d.ts +1 -0
- package/lib/pages/__tests__/aiReviewCardStyles.test.js +29 -0
- package/lib/pages/__tests__/aiReviewCardStyles.test.js.map +1 -0
- package/lib/pages/__tests__/aiReviewChineseColons.test.d.ts +1 -0
- package/lib/pages/__tests__/aiReviewChineseColons.test.js +132 -0
- package/lib/pages/__tests__/aiReviewChineseColons.test.js.map +1 -0
- package/lib/pages/__tests__/clientCssCacheVersion.test.d.ts +1 -0
- package/lib/pages/__tests__/clientCssCacheVersion.test.js +31 -0
- package/lib/pages/__tests__/clientCssCacheVersion.test.js.map +1 -0
- package/lib/pages/__tests__/materialDetailAIReviewFilter.test.d.ts +1 -0
- package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js +51 -0
- package/lib/pages/__tests__/materialDetailAIReviewFilter.test.js.map +1 -0
- package/lib/pages/__tests__/plsReviewCardStyles.test.d.ts +1 -0
- package/lib/pages/__tests__/plsReviewCardStyles.test.js +98 -0
- package/lib/pages/__tests__/plsReviewCardStyles.test.js.map +1 -0
- package/lib/pages/__tests__/plsReviewPage.test.d.ts +1 -0
- package/lib/pages/__tests__/plsReviewPage.test.js +249 -0
- package/lib/pages/__tests__/plsReviewPage.test.js.map +1 -0
- package/main/default/applications/pepsico_content_setting.app.yml +4 -0
- package/main/default/client/pepsico_content.client.js +8 -3
- package/main/default/objects/ai_process_detail/ai_process_detail.object.yml +1 -0
- package/main/default/objects/ai_process_detail/fields/pls_extracted_data.field.yml +9 -0
- package/main/default/objects/ai_process_detail/fields/pls_file_ids.field.yml +9 -0
- package/main/default/objects/ai_process_detail/fields/pls_product_name_matched.field.yml +9 -0
- package/main/default/objects/ai_process_detail/fields/pls_rule_unique_matched.field.yml +9 -0
- package/main/default/objects/pepesio_ch__c/fields/company_id.field.yml +14 -0
- package/main/default/objects/pepesio_ch__c/fields/company_ids.field.yml +16 -0
- package/main/default/objects/pepesio_ch__c/fields/created.field.yml +10 -0
- package/main/default/objects/pepesio_ch__c/fields/created_by.field.yml +9 -0
- package/main/default/objects/pepesio_ch__c/fields/file_name.field.yml +8 -0
- package/main/default/objects/pepesio_ch__c/fields/instance_state.field.yml +25 -0
- package/main/default/objects/pepesio_ch__c/fields/locked.field.yml +12 -0
- package/main/default/objects/pepesio_ch__c/fields/material_type.field.yml +10 -0
- package/main/default/objects/pepesio_ch__c/fields/media_type.field.yml +13 -0
- package/main/default/objects/pepesio_ch__c/fields/modified.field.yml +10 -0
- package/main/default/objects/pepesio_ch__c/fields/modified_by.field.yml +9 -0
- package/main/default/objects/pepesio_ch__c/fields/name.field.yml +11 -0
- package/main/default/objects/pepesio_ch__c/fields/owner.field.yml +12 -0
- package/main/default/objects/pepesio_ch__c/fields/product.field.yml +10 -0
- package/main/default/objects/pepesio_ch__c/fields/time.field.yml +8 -0
- package/main/default/objects/pepesio_ch__c/fields/type.field.yml +22 -0
- package/main/default/objects/pepesio_ch__c/listviews/all.listview.yml +21 -0
- package/main/default/objects/pepesio_ch__c/listviews/recent.listview.yml +11 -0
- package/main/default/objects/pepesio_ch__c/pepesio_ch__c.object.yml +31 -0
- package/main/default/objects/pepesio_ch__c/permissions/admin.permission.yml +9 -0
- package/main/default/objects/pepesio_ch__c/permissions/user.permission.yml +9 -0
- package/main/default/objects/pepsico_ai_review/buttons/pepsico_adopt.button.yml +3 -3
- package/main/default/objects/pepsico_ai_review/fields/is_active.field.yml +7 -0
- package/main/default/objects/pepsico_ai_review/fields/pepsico_material_approval.field.yml +7 -0
- package/main/default/objects/pepsico_ai_review/fields/pls_file.field.yml +7 -0
- package/main/default/objects/pepsico_ai_review/fields/review_type.field.yml +12 -0
- package/main/default/objects/pepsico_approval_process/fields/type.field.yml +5 -1
- package/main/default/objects/pepsico_km_pls/fields/allergen_statement.field.yml +9 -0
- package/main/default/objects/pepsico_km_pls/fields/ingredient_list.field.yml +9 -0
- package/main/default/objects/pepsico_km_pls/listviews/all.listview.yml +6 -0
- package/main/default/objects/pepsico_km_pls_file/listviews/lookup.listview.yml +19 -0
- package/main/default/objects/pepsico_km_pls_file/permissions/user.permission.yml +2 -2
- package/main/default/objects/pepsico_material/fields/pre_qc_approval_status.field.yml +16 -0
- package/main/default/objects/pepsico_material/fields/qc_approval_status.field.yml +16 -0
- package/main/default/objects/pepsico_material/fields/qc_bypass_reason.field.yml +11 -0
- package/main/default/objects/pepsico_material/fields/qc_bypassed.field.yml +12 -0
- package/main/default/objects/pepsico_material/fields/qc_bypassed_at.field.yml +11 -0
- package/main/default/objects/pepsico_material/fields/qc_bypassed_by.field.yml +12 -0
- package/main/default/objects/pepsico_material/listviews/all.listview.yml +2 -0
- package/main/default/objects/pepsico_material_approval/buttons/pepsico_modify_pls.button.yml +70 -0
- package/main/default/objects/pepsico_material_approval/buttons/pepsico_postpone_review.button.yml +62 -37
- package/main/default/objects/pepsico_material_approval/buttons/pre_review_approve.button.yml +1 -1
- package/main/default/objects/pepsico_material_approval/buttons/pre_review_reject.button.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/approved_flows.field.yml +2 -2
- package/main/default/objects/pepsico_material_approval/fields/assistance.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/ca_assistance.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/classification.field.yml +15 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_food_name.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_ingredients.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_net_content.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_address.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_producer_name.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_shelf_life.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_standard_code.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_check_storage_condition.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_has_detail_page.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.field.yml +5 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_address.field.yml +7 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_producers.$.producer_name.field.yml +7 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_producers.field.yml +16 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_qc_production_email.field.yml +16 -0
- package/main/default/objects/pepsico_material_approval/fields/ec_related_approval.field.yml +9 -0
- package/main/default/objects/pepsico_material_approval/fields/form_version.field.yml +10 -0
- package/main/default/objects/pepsico_material_approval/fields/handler_preca.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/handler_preguding.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/handler_prens.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/handler_preqc.field.yml +22 -0
- package/main/default/objects/pepsico_material_approval/fields/handler_presra.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/handler_qc.field.yml +20 -0
- package/main/default/objects/pepsico_material_approval/fields/has_nutrition_table.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/legal_assistance.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/ns_assistance.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/pls_file.field.yml +2 -2
- package/main/default/objects/pepsico_material_approval/fields/pls_km_files.field.yml +28 -0
- package/main/default/objects/pepsico_material_approval/fields/pls_upload_files.field.yml +21 -0
- package/main/default/objects/pepsico_material_approval/fields/pre_ca_reviewer.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/pre_ns_reviewer.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/pre_qc_approval_status.field.yml +17 -0
- package/main/default/objects/pepsico_material_approval/fields/pre_qc_materials_quantity.field.yml +21 -0
- package/main/default/objects/pepsico_material_approval/fields/pre_qc_reviewer.field.yml +19 -0
- package/main/default/objects/pepsico_material_approval/fields/pre_reviewer.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/pre_sra_reviewer.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/fields/product.field.yml +15 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_approval_status.field.yml +18 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_assistance.field.yml +22 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_bypass_reason.field.yml +8 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_bypassed.field.yml +12 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_at.field.yml +8 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_bypassed_by.field.yml +8 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_materials_quantity.field.yml +21 -0
- package/main/default/objects/pepsico_material_approval/fields/qc_reviewer.field.yml +22 -0
- package/main/default/objects/pepsico_material_approval/fields/sra_assistance.field.yml +1 -1
- package/main/default/objects/pepsico_material_approval/listviews/all.listview.yml +2 -0
- package/main/default/objects/pepsico_material_approval/pepsico_material_approval.object.yml +4 -0
- package/main/default/objects/pepsico_pls_change_log/fields/after_pls_files.field.yml +9 -0
- package/main/default/objects/pepsico_pls_change_log/fields/after_pls_names.field.yml +7 -0
- package/main/default/objects/pepsico_pls_change_log/fields/approval.field.yml +7 -0
- package/main/default/objects/pepsico_pls_change_log/fields/approval_name.field.yml +6 -0
- package/main/default/objects/pepsico_pls_change_log/fields/before_pls_files.field.yml +9 -0
- package/main/default/objects/pepsico_pls_change_log/fields/before_pls_names.field.yml +7 -0
- package/main/default/objects/pepsico_pls_change_log/fields/material.field.yml +8 -0
- package/main/default/objects/pepsico_pls_change_log/fields/operator.field.yml +7 -0
- package/main/default/objects/pepsico_pls_change_log/fields/scene.field.yml +13 -0
- package/main/default/objects/pepsico_pls_change_log/fields/source.field.yml +14 -0
- package/main/default/objects/pepsico_pls_change_log/fields/space.field.yml +6 -0
- package/main/default/objects/pepsico_pls_change_log/listviews/all.listview.yml +25 -0
- package/main/default/objects/pepsico_pls_change_log/pepsico_pls_change_log.object.yml +16 -0
- package/main/default/objects/pepsico_pls_change_log/permissions/admin.permission.yml +15 -0
- package/main/default/objects/pepsico_pls_change_log/permissions/user.permission.yml +14 -0
- package/main/default/objects/pepsico_review_postpone/fields/department_type.field.yml +4 -0
- package/main/default/objects/pepsico_reviewer/fields/pre_qc_reviewer.field.yml +10 -0
- package/main/default/objects/pepsico_reviewer/fields/qc_assistance.field.yml +14 -0
- package/main/default/objects/pepsico_reviewer/fields/qc_reviewer.field.yml +12 -0
- package/main/default/objects/pepsico_reviewer/listviews/all.listview.yml +4 -0
- package/main/default/pages/pepsico_content_review_detail.page.amis.json +19 -1
- package/main/default/pages/pepsico_material_detail.page.amis.json +623 -41
- package/main/default/pages/pepsico_material_detail_mobile.page.amis.json +307 -3
- package/main/default/tabs/object_pepsico_pls_change_log.tab.yml +14 -0
- package/main/default/triggers/pepsico_material_approval_change.trigger.yml +3 -0
- package/package.json +1 -1
- package/public/content-review/amis.css +338 -8
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var pls_1 = require("../pls");
|
|
5
|
+
describe('PLS change log', function () {
|
|
6
|
+
var buildCtx = function (changeLogInsert) { return ({
|
|
7
|
+
meta: { user: { userId: 'sra-1' } },
|
|
8
|
+
getObject: function (name) {
|
|
9
|
+
if (name === 'pepsico_km_pls_file') {
|
|
10
|
+
return {
|
|
11
|
+
directFind: jest.fn().mockResolvedValue([
|
|
12
|
+
{ _id: 'pls-a', name: 'PLS 旧版' },
|
|
13
|
+
{ _id: 'pls-d', name: 'PLS 新版' }
|
|
14
|
+
])
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
if (name === 'pepsico_pls_change_log') {
|
|
18
|
+
return { directInsert: changeLogInsert };
|
|
19
|
+
}
|
|
20
|
+
throw new Error("Unexpected object ".concat(name));
|
|
21
|
+
}
|
|
22
|
+
}); };
|
|
23
|
+
it('records the change with redundant file names', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
24
|
+
var changeLogInsert;
|
|
25
|
+
return tslib_1.__generator(this, function (_a) {
|
|
26
|
+
switch (_a.label) {
|
|
27
|
+
case 0:
|
|
28
|
+
changeLogInsert = jest.fn();
|
|
29
|
+
return [4, (0, pls_1.logPLSChange)(buildCtx(changeLogInsert), {
|
|
30
|
+
approval: { _id: 'approval-1', name: 'AP-001', space: 'space-1' },
|
|
31
|
+
scene: 'reviewer_change',
|
|
32
|
+
materialId: 'material-1',
|
|
33
|
+
beforeIds: ['pls-a'],
|
|
34
|
+
afterIds: ['pls-d'],
|
|
35
|
+
source: 'upload'
|
|
36
|
+
})];
|
|
37
|
+
case 1:
|
|
38
|
+
_a.sent();
|
|
39
|
+
expect(changeLogInsert).toHaveBeenCalledWith(expect.objectContaining({
|
|
40
|
+
approval: 'approval-1',
|
|
41
|
+
approval_name: 'AP-001',
|
|
42
|
+
material: 'material-1',
|
|
43
|
+
scene: 'reviewer_change',
|
|
44
|
+
source: 'upload',
|
|
45
|
+
before_pls_files: ['pls-a'],
|
|
46
|
+
before_pls_names: 'PLS 旧版',
|
|
47
|
+
after_pls_files: ['pls-d'],
|
|
48
|
+
after_pls_names: 'PLS 新版',
|
|
49
|
+
operator: 'sra-1',
|
|
50
|
+
space: 'space-1'
|
|
51
|
+
}));
|
|
52
|
+
return [2];
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}); });
|
|
56
|
+
it('skips approvals that never had a PLS file', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
57
|
+
var changeLogInsert;
|
|
58
|
+
return tslib_1.__generator(this, function (_a) {
|
|
59
|
+
switch (_a.label) {
|
|
60
|
+
case 0:
|
|
61
|
+
changeLogInsert = jest.fn();
|
|
62
|
+
return [4, (0, pls_1.logPLSChange)(buildCtx(changeLogInsert), {
|
|
63
|
+
approval: { _id: 'approval-1' },
|
|
64
|
+
scene: 'submit',
|
|
65
|
+
beforeIds: [],
|
|
66
|
+
afterIds: []
|
|
67
|
+
})];
|
|
68
|
+
case 1:
|
|
69
|
+
_a.sent();
|
|
70
|
+
expect(changeLogInsert).not.toHaveBeenCalled();
|
|
71
|
+
return [2];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}); });
|
|
75
|
+
it('never throws when the log write fails', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
76
|
+
var ctx;
|
|
77
|
+
return tslib_1.__generator(this, function (_a) {
|
|
78
|
+
switch (_a.label) {
|
|
79
|
+
case 0:
|
|
80
|
+
ctx = {
|
|
81
|
+
meta: { user: { userId: 'sra-1' } },
|
|
82
|
+
getObject: function () { throw new Error('boom'); }
|
|
83
|
+
};
|
|
84
|
+
return [4, expect((0, pls_1.logPLSChange)(ctx, {
|
|
85
|
+
approval: { _id: 'approval-1' },
|
|
86
|
+
scene: 'submit',
|
|
87
|
+
beforeIds: ['pls-a'],
|
|
88
|
+
afterIds: ['pls-a']
|
|
89
|
+
})).resolves.toBeUndefined()];
|
|
90
|
+
case 1:
|
|
91
|
+
_a.sent();
|
|
92
|
+
return [2];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); });
|
|
96
|
+
});
|
|
97
|
+
describe('PLS review source management', function () {
|
|
98
|
+
it('backfills the approval on the PLS record without touching pls_km_files', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
99
|
+
var plsUpdate, approvalUpdate, ctx, result;
|
|
100
|
+
return tslib_1.__generator(this, function (_a) {
|
|
101
|
+
switch (_a.label) {
|
|
102
|
+
case 0:
|
|
103
|
+
plsUpdate = jest.fn();
|
|
104
|
+
approvalUpdate = jest.fn();
|
|
105
|
+
ctx = {
|
|
106
|
+
meta: { user: { userId: 'sra-1', spaceId: 'space-1' } },
|
|
107
|
+
getObject: function (name) {
|
|
108
|
+
if (name === 'cfs_files_filerecord') {
|
|
109
|
+
return {
|
|
110
|
+
directFind: jest.fn().mockResolvedValue([
|
|
111
|
+
{ _id: 'file-1', original: { name: 'PLS新规.pdf', type: 'application/pdf' } }
|
|
112
|
+
])
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (name === 'pepsico_km_pls_file') {
|
|
116
|
+
return {
|
|
117
|
+
directInsert: jest.fn().mockResolvedValue({ _id: 'pls-new', name: 'PLS新规' }),
|
|
118
|
+
directUpdate: plsUpdate
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (name === 'pepsico_material_approval') {
|
|
122
|
+
return { directUpdate: approvalUpdate };
|
|
123
|
+
}
|
|
124
|
+
throw new Error("Unexpected object ".concat(name));
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return [4, (0, pls_1.createApplicationPLSFiles)(ctx, ['file-1'], {
|
|
128
|
+
_id: 'approval-1',
|
|
129
|
+
pls_km_files: ['pls-a']
|
|
130
|
+
})];
|
|
131
|
+
case 1:
|
|
132
|
+
result = _a.sent();
|
|
133
|
+
expect(result.records).toEqual([{ id: 'pls-new', name: 'PLS新规' }]);
|
|
134
|
+
expect(plsUpdate).toHaveBeenCalledWith('pls-new', expect.objectContaining({
|
|
135
|
+
pepsico_material_approval: 'approval-1'
|
|
136
|
+
}));
|
|
137
|
+
expect(approvalUpdate).not.toHaveBeenCalled();
|
|
138
|
+
return [2];
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}); });
|
|
142
|
+
it('shows PLS opinions with true, null, or missing active status', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
143
|
+
var reviews, ctx, result;
|
|
144
|
+
return tslib_1.__generator(this, function (_a) {
|
|
145
|
+
switch (_a.label) {
|
|
146
|
+
case 0:
|
|
147
|
+
reviews = [
|
|
148
|
+
{ _id: 'review-true', pls_file: 'pls-a', is_active: true },
|
|
149
|
+
{ _id: 'review-false', pls_file: 'pls-a', is_active: false },
|
|
150
|
+
{ _id: 'review-null', pls_file: 'pls-a', is_active: null },
|
|
151
|
+
{ _id: 'review-missing', pls_file: 'pls-a' }
|
|
152
|
+
];
|
|
153
|
+
ctx = {
|
|
154
|
+
meta: { user: { userId: 'viewer-1' } },
|
|
155
|
+
getObject: function (name) {
|
|
156
|
+
if (name === 'pepsico_material') {
|
|
157
|
+
return {
|
|
158
|
+
findOne: jest.fn().mockResolvedValue({
|
|
159
|
+
_id: 'material-1',
|
|
160
|
+
pepsico_material_approval: 'approval-1'
|
|
161
|
+
})
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
if (name === 'pepsico_material_approval') {
|
|
165
|
+
return {
|
|
166
|
+
findOne: jest.fn().mockResolvedValue({ _id: 'approval-1' })
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (name === 'pepsico_ai_review') {
|
|
170
|
+
return { find: jest.fn().mockResolvedValue(reviews) };
|
|
171
|
+
}
|
|
172
|
+
if (name === 'pepsico_km_pls_file') {
|
|
173
|
+
return {
|
|
174
|
+
directFind: jest.fn().mockResolvedValue([
|
|
175
|
+
{ _id: 'pls-a', name: 'PLS A', is_active: true }
|
|
176
|
+
])
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
throw new Error("Unexpected object ".concat(name));
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
return [4, (0, pls_1.getPLSReviewGroups)(ctx, 'material-1')];
|
|
183
|
+
case 1:
|
|
184
|
+
result = _a.sent();
|
|
185
|
+
expect(result.groups).toHaveLength(1);
|
|
186
|
+
expect(result.groups[0].reviews.map(function (review) { return review._id; })).toEqual([
|
|
187
|
+
'review-true',
|
|
188
|
+
'review-null',
|
|
189
|
+
'review-missing'
|
|
190
|
+
]);
|
|
191
|
+
return [2];
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}); });
|
|
195
|
+
it('offers PLS files with true, null, or missing active status', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
196
|
+
var ctx, options;
|
|
197
|
+
return tslib_1.__generator(this, function (_a) {
|
|
198
|
+
switch (_a.label) {
|
|
199
|
+
case 0:
|
|
200
|
+
ctx = {
|
|
201
|
+
getObject: function (name) {
|
|
202
|
+
if (name === 'pepsico_km_pls_file') {
|
|
203
|
+
return {
|
|
204
|
+
find: jest.fn().mockResolvedValue([
|
|
205
|
+
{ _id: 'pls-true', name: 'True', is_active: true },
|
|
206
|
+
{ _id: 'pls-false', name: 'False', is_active: false },
|
|
207
|
+
{ _id: 'pls-null', name: 'Null', is_active: null },
|
|
208
|
+
{ _id: 'pls-missing', name: 'Missing' }
|
|
209
|
+
])
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
throw new Error("Unexpected object ".concat(name));
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
return [4, (0, pls_1.getActivePLSOptions)(ctx)];
|
|
216
|
+
case 1:
|
|
217
|
+
options = _a.sent();
|
|
218
|
+
expect(options.map(function (option) { return option.value; })).toEqual([
|
|
219
|
+
'pls-true',
|
|
220
|
+
'pls-null',
|
|
221
|
+
'pls-missing'
|
|
222
|
+
]);
|
|
223
|
+
return [2];
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}); });
|
|
227
|
+
it('invalidates PLS opinions unless they are explicitly inactive', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
228
|
+
var reviewUpdate, ctx, invalidated;
|
|
229
|
+
return tslib_1.__generator(this, function (_a) {
|
|
230
|
+
switch (_a.label) {
|
|
231
|
+
case 0:
|
|
232
|
+
reviewUpdate = jest.fn();
|
|
233
|
+
ctx = {
|
|
234
|
+
getObject: function (name) {
|
|
235
|
+
if (name === 'pepsico_ai_review') {
|
|
236
|
+
return {
|
|
237
|
+
directFind: jest.fn().mockResolvedValue([
|
|
238
|
+
{ _id: 'review-true', is_active: true },
|
|
239
|
+
{ _id: 'review-false', is_active: false },
|
|
240
|
+
{ _id: 'review-null', is_active: null },
|
|
241
|
+
{ _id: 'review-missing' }
|
|
242
|
+
]),
|
|
243
|
+
directUpdateMany: reviewUpdate
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
throw new Error("Unexpected object ".concat(name));
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
return [4, (0, pls_1.invalidatePLSReviews)(ctx, 'approval-1')];
|
|
250
|
+
case 1:
|
|
251
|
+
invalidated = _a.sent();
|
|
252
|
+
expect(invalidated).toBe(3);
|
|
253
|
+
expect(reviewUpdate).toHaveBeenCalledWith(['_id', 'in', ['review-true', 'review-null', 'review-missing']], expect.objectContaining({ is_active: false }));
|
|
254
|
+
return [2];
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}); });
|
|
258
|
+
it('recognizes users from the current reviewer configuration', function () {
|
|
259
|
+
var approval = {
|
|
260
|
+
sra_reviewer: ['sra-1'],
|
|
261
|
+
qc_reviewer: ['qc-1'],
|
|
262
|
+
reviewer: ['fixed-1']
|
|
263
|
+
};
|
|
264
|
+
expect((0, pls_1.isApprovalReviewer)(approval, 'sra-1')).toBe(true);
|
|
265
|
+
expect((0, pls_1.isApprovalReviewer)(approval, 'qc-1')).toBe(true);
|
|
266
|
+
expect((0, pls_1.isApprovalReviewer)(approval, 'owner-1')).toBe(false);
|
|
267
|
+
});
|
|
268
|
+
it('limits invalidation to one material when a material is given', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
269
|
+
var reviewFind, ctx;
|
|
270
|
+
return tslib_1.__generator(this, function (_a) {
|
|
271
|
+
switch (_a.label) {
|
|
272
|
+
case 0:
|
|
273
|
+
reviewFind = jest.fn().mockResolvedValue([]);
|
|
274
|
+
ctx = {
|
|
275
|
+
getObject: function (name) {
|
|
276
|
+
if (name === 'pepsico_ai_review') {
|
|
277
|
+
return { directFind: reviewFind, directUpdateMany: jest.fn() };
|
|
278
|
+
}
|
|
279
|
+
throw new Error("Unexpected object ".concat(name));
|
|
280
|
+
}
|
|
281
|
+
};
|
|
282
|
+
return [4, (0, pls_1.invalidatePLSReviews)(ctx, 'approval-1', 'pls-a', 'material-1')];
|
|
283
|
+
case 1:
|
|
284
|
+
_a.sent();
|
|
285
|
+
expect(reviewFind).toHaveBeenCalledWith(expect.objectContaining({
|
|
286
|
+
filters: [
|
|
287
|
+
['pepsico_material_approval', '=', 'approval-1'],
|
|
288
|
+
['review_type', '=', 'pls'],
|
|
289
|
+
['pls_file', '=', 'pls-a'],
|
|
290
|
+
['pepsico_material', '=', 'material-1']
|
|
291
|
+
]
|
|
292
|
+
}));
|
|
293
|
+
return [2];
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}); });
|
|
297
|
+
it('replaces only the selected PLS source and invalidates its old opinions', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
298
|
+
var approval, approvalUpdate, reviewUpdate, reviewFind, changeLogInsert, ctx, result;
|
|
299
|
+
return tslib_1.__generator(this, function (_a) {
|
|
300
|
+
switch (_a.label) {
|
|
301
|
+
case 0:
|
|
302
|
+
approval = {
|
|
303
|
+
_id: 'approval-1',
|
|
304
|
+
sra_reviewer: ['sra-1'],
|
|
305
|
+
pls_km_files: ['pls-a', 'pls-b', 'pls-c']
|
|
306
|
+
};
|
|
307
|
+
approvalUpdate = jest.fn();
|
|
308
|
+
reviewUpdate = jest.fn();
|
|
309
|
+
reviewFind = jest.fn().mockResolvedValue([{ _id: 'review-a' }]);
|
|
310
|
+
changeLogInsert = jest.fn();
|
|
311
|
+
ctx = {
|
|
312
|
+
meta: { user: { userId: 'sra-1' } },
|
|
313
|
+
getObject: function (name) {
|
|
314
|
+
if (name === 'pepsico_material_approval') {
|
|
315
|
+
return { findOne: jest.fn().mockResolvedValue(approval), directUpdate: approvalUpdate };
|
|
316
|
+
}
|
|
317
|
+
if (name === 'pepsico_km_pls_file') {
|
|
318
|
+
return { directFind: jest.fn().mockResolvedValue([{ _id: 'pls-d' }]) };
|
|
319
|
+
}
|
|
320
|
+
if (name === 'pepsico_ai_review') {
|
|
321
|
+
return {
|
|
322
|
+
directFind: reviewFind,
|
|
323
|
+
directUpdateMany: reviewUpdate
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
if (name === 'pepsico_pls_change_log') {
|
|
327
|
+
return { directInsert: changeLogInsert };
|
|
328
|
+
}
|
|
329
|
+
throw new Error("Unexpected object ".concat(name));
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
return [4, (0, pls_1.replaceApprovalPLSSource)(ctx, 'approval-1', 'pls-a', 'pls-d', 'material-1', 'existing')];
|
|
333
|
+
case 1:
|
|
334
|
+
result = _a.sent();
|
|
335
|
+
expect(result.pls_km_files).toEqual(['pls-d', 'pls-b', 'pls-c']);
|
|
336
|
+
expect(approvalUpdate).toHaveBeenCalledWith('approval-1', expect.objectContaining({
|
|
337
|
+
pls_km_files: ['pls-d', 'pls-b', 'pls-c']
|
|
338
|
+
}));
|
|
339
|
+
expect(reviewUpdate).toHaveBeenCalledWith(['_id', 'in', ['review-a']], expect.objectContaining({ is_active: false }));
|
|
340
|
+
expect(reviewFind).toHaveBeenCalledWith(expect.objectContaining({
|
|
341
|
+
filters: expect.arrayContaining([['pepsico_material', '=', 'material-1']])
|
|
342
|
+
}));
|
|
343
|
+
expect(changeLogInsert).toHaveBeenCalledWith(expect.objectContaining({
|
|
344
|
+
scene: 'reviewer_change',
|
|
345
|
+
material: 'material-1',
|
|
346
|
+
source: 'existing',
|
|
347
|
+
before_pls_files: ['pls-a'],
|
|
348
|
+
after_pls_files: ['pls-d']
|
|
349
|
+
}));
|
|
350
|
+
return [2];
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
}); });
|
|
354
|
+
it('accepts replacement sources that are not active yet', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
355
|
+
var approvalUpdate, ctx, result;
|
|
356
|
+
return tslib_1.__generator(this, function (_a) {
|
|
357
|
+
switch (_a.label) {
|
|
358
|
+
case 0:
|
|
359
|
+
approvalUpdate = jest.fn();
|
|
360
|
+
ctx = {
|
|
361
|
+
meta: { user: { userId: 'qc-1' } },
|
|
362
|
+
getObject: function (name) {
|
|
363
|
+
if (name === 'pepsico_material_approval') {
|
|
364
|
+
return {
|
|
365
|
+
findOne: jest.fn().mockResolvedValue({
|
|
366
|
+
_id: 'approval-1',
|
|
367
|
+
qc_reviewer: ['qc-1'],
|
|
368
|
+
pls_km_files: ['pls-a']
|
|
369
|
+
}),
|
|
370
|
+
directUpdate: approvalUpdate
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
if (name === 'pepsico_ai_review') {
|
|
374
|
+
return {
|
|
375
|
+
directFind: jest.fn().mockResolvedValue([]),
|
|
376
|
+
directUpdateMany: jest.fn()
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
if (name === 'pepsico_km_pls_file') {
|
|
380
|
+
return { directFind: jest.fn().mockResolvedValue([]) };
|
|
381
|
+
}
|
|
382
|
+
if (name === 'pepsico_pls_change_log') {
|
|
383
|
+
return { directInsert: jest.fn() };
|
|
384
|
+
}
|
|
385
|
+
throw new Error("Unexpected object ".concat(name));
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
return [4, (0, pls_1.replaceApprovalPLSSource)(ctx, 'approval-1', 'pls-a', 'pls-inactive')];
|
|
389
|
+
case 1:
|
|
390
|
+
result = _a.sent();
|
|
391
|
+
expect(result.pls_km_files).toEqual(['pls-inactive']);
|
|
392
|
+
expect(approvalUpdate).toHaveBeenCalledWith('approval-1', expect.objectContaining({
|
|
393
|
+
pls_km_files: ['pls-inactive']
|
|
394
|
+
}));
|
|
395
|
+
return [2];
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
}); });
|
|
399
|
+
it('still rejects sources that are not linked to the approval', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
400
|
+
var ctx;
|
|
401
|
+
return tslib_1.__generator(this, function (_a) {
|
|
402
|
+
switch (_a.label) {
|
|
403
|
+
case 0:
|
|
404
|
+
ctx = {
|
|
405
|
+
meta: { user: { userId: 'qc-1' } },
|
|
406
|
+
getObject: function (name) {
|
|
407
|
+
if (name === 'pepsico_material_approval') {
|
|
408
|
+
return {
|
|
409
|
+
findOne: jest.fn().mockResolvedValue({
|
|
410
|
+
_id: 'approval-1',
|
|
411
|
+
qc_reviewer: ['qc-1'],
|
|
412
|
+
pls_km_files: ['pls-a']
|
|
413
|
+
})
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
throw new Error("Unexpected object ".concat(name));
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
return [4, expect((0, pls_1.replaceApprovalPLSSource)(ctx, 'approval-1', 'pls-unlinked', 'pls-new'))
|
|
420
|
+
.rejects.toThrow('当前PLS来源未关联到审批单')];
|
|
421
|
+
case 1:
|
|
422
|
+
_a.sent();
|
|
423
|
+
return [2];
|
|
424
|
+
}
|
|
425
|
+
});
|
|
426
|
+
}); });
|
|
427
|
+
});
|
|
428
|
+
//# sourceMappingURL=plsReview.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plsReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/plsReview.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -98,5 +98,26 @@ describe('postponeReview', function () {
|
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
100
|
}); });
|
|
101
|
+
it('rejects a blank postpone reason before touching any data', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
102
|
+
var getObject, ctx;
|
|
103
|
+
return tslib_1.__generator(this, function (_a) {
|
|
104
|
+
switch (_a.label) {
|
|
105
|
+
case 0:
|
|
106
|
+
getObject = jest.fn();
|
|
107
|
+
ctx = {
|
|
108
|
+
meta: { user: { userId: 'reviewer-1' } },
|
|
109
|
+
getObject: getObject
|
|
110
|
+
};
|
|
111
|
+
return [4, expect((0, approval_engine_1.postponeReview)(ctx, 'approval-1', { postpone_reason: ' ' })).rejects.toThrow('请填写延后原因')];
|
|
112
|
+
case 1:
|
|
113
|
+
_a.sent();
|
|
114
|
+
return [4, expect((0, approval_engine_1.postponeReview)(ctx, 'approval-1', {})).rejects.toThrow('请填写延后原因')];
|
|
115
|
+
case 2:
|
|
116
|
+
_a.sent();
|
|
117
|
+
expect(getObject).not.toHaveBeenCalled();
|
|
118
|
+
return [2];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}); });
|
|
101
122
|
});
|
|
102
123
|
//# sourceMappingURL=postponeReview.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postponeReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/postponeReview.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postponeReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/postponeReview.test.ts"],"names":[],"mappings":";;;AAAA,sDAAqF;AACrF,oCAAsD;AAEtD,IAAM,YAAY,GAAQ;IACtB,GAAG,EAAE,YAAY;IACjB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,OAAO;IACb,YAAY,EAAE,aAAI,CAAC,mBAAmB;IACtC,WAAW,EAAE,CAAC,YAAY,CAAC;IAC3B,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,CAAC,YAAY,CAAC;IAC1B,YAAY,EAAE,CAAC,YAAY,CAAC;IAC5B,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,KAAK;CAC9B,CAAC;AAEF,QAAQ,CAAC,uCAAuC,EAAE;IAC9C,EAAE,CAAC,+EAA+E,EAAE;QAChF,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;YAClC,EAAE,IAAI,EAAE,4BAAmB,CAAC,EAAE,EAAE;SACnC,CAAC,CAAC;QAEH,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE;QACxD,MAAM,CAAC,cAAM,OAAA,IAAA,iDAA+B,wCACrC,YAAY,KACf,kBAAkB,EAAE,EAAE,EACtB,UAAU,EAAE,EAAE,KACf;YACC,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,EANH,CAMG,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE;QACtE,IAAM,cAAc,GAAG,IAAA,iDAA+B,EAAC,YAAY,EAAE;YACjE,EAAE,IAAI,EAAE,4BAAmB,CAAC,IAAI,EAAE;SACrC,EAAE,YAAY,CAAC,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,4BAAmB,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE;IACvB,EAAE,CAAC,gGAAgG,EAAE;;;;;oBAC3F,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBACjC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAC3B,yBAAyB,GAAG,IAAI,CAAC,EAAE,EAAE;yBACtC,qBAAqB,CAAC,EAAE,CAAC;yBACzB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,4BAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACzD,MAAM,yCACL,YAAY,KACf,eAAe,EAAE,CAAC,YAAY,CAAC,EAC/B,sBAAsB,EAAE,EAAE,EAC1B,qBAAqB,EAAE,EAAE,EACzB,sBAAsB,EAAE,EAAE,GAC7B,CAAC;oBAEI,GAAG,GAAQ;wBACb,IAAI,EAAE;4BACF,IAAI,EAAE;gCACF,MAAM,EAAE,YAAY;6BACvB;yBACJ;wBACD,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,UAAC,UAAkB;4BAClC,IAAI,UAAU,KAAK,2BAA2B,EAAE;gCAC5C,OAAO;oCACH,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;oCAC5C,YAAY,EAAE,oBAAoB;iCACrC,CAAC;6BACL;4BACD,IAAI,UAAU,KAAK,0BAA0B,EAAE;gCAC3C,OAAO;oCACH,UAAU,EAAE,yBAAyB;iCACxC,CAAC;6BACL;4BACD,IAAI,UAAU,KAAK,yBAAyB,EAAE;gCAC1C,OAAO;oCACH,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;oCAC3C,MAAM,EAAE,cAAc;iCACzB,CAAC;6BACL;4BACD,MAAM,IAAI,KAAK,CAAC,6BAAsB,UAAU,CAAE,CAAC,CAAC;wBACxD,CAAC,CAAC;qBACL,CAAC;oBAEF,WAAM,IAAA,gCAAc,EAAC,GAAG,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,EAAA;;oBAA1E,SAA0E,CAAC;oBAE3E,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC;wBAChE,yBAAyB,EAAE,YAAY;wBACvC,eAAe,EAAE,4BAAmB,CAAC,EAAE;wBACvC,WAAW,EAAE,YAAY;wBACzB,eAAe,EAAE,YAAY;wBAC7B,SAAS,EAAE,IAAI;wBACf,iBAAiB,EAAE,KAAK;wBACxB,kBAAkB,EAAE,YAAY;qBACnC,CAAC,CAAC,CAAC;oBACJ,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;oBAC5E,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE;wBAC5D,qBAAqB,EAAE,CAAC,YAAY,CAAC;qBACxC,CAAC,CAAC;oBACH,MAAM,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,CAAC;wBACxF,sBAAsB,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;qBAC5C,CAAC,CAAC,CAAC;;;;SACP,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE;;;;;oBACrD,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBACtB,GAAG,GAAQ;wBACb,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;wBACxC,SAAS,WAAA;qBACZ,CAAC;oBAEF,WAAM,MAAM,CAAC,IAAA,gCAAc,EAAC,GAAG,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;oBAAtG,SAAsG,CAAC;oBACvG,WAAM,MAAM,CAAC,IAAA,gCAAc,EAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;oBAA9E,SAA8E,CAAC;oBAC/E,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;;;;SAC5C,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var approval_engine_1 = require("../approval_engine");
|
|
5
|
+
var material_1 = require("../material");
|
|
6
|
+
var consts_1 = require("../consts");
|
|
7
|
+
var approvedDepartments = {
|
|
8
|
+
_id: 'approval-qc',
|
|
9
|
+
current_step: consts_1.Step.departmental_review,
|
|
10
|
+
ns_approval_status: true,
|
|
11
|
+
legal_approval_status: true,
|
|
12
|
+
sra_approval_status: true,
|
|
13
|
+
ca_approval_status: true
|
|
14
|
+
};
|
|
15
|
+
describe('QC conditional parallel review', function () {
|
|
16
|
+
it('does not require QC when the approval has no product detail page', function () {
|
|
17
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { ec_has_detail_page: 'no' });
|
|
18
|
+
expect((0, approval_engine_1.needsQcReview)(approval)).toBe(false);
|
|
19
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
20
|
+
expect((0, approval_engine_1.getDepartmentEffectiveStatuses)(approval)).toEqual([true, true, true, true]);
|
|
21
|
+
});
|
|
22
|
+
it('keeps the departmental review pending until QC finishes', function () {
|
|
23
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { ec_has_detail_page: 'yes', qc_approval_status: '' });
|
|
24
|
+
expect((0, approval_engine_1.needsQcReview)(approval)).toBe(true);
|
|
25
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
it.each([true, 'pass'])('accepts QC result %p as completed', function (qcStatus) {
|
|
28
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { ec_has_detail_page: 'yes', qc_approval_status: qcStatus });
|
|
29
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
30
|
+
expect((0, approval_engine_1.getDepartmentEffectiveStatuses)(approval)).toEqual([true, true, true, true, qcStatus]);
|
|
31
|
+
});
|
|
32
|
+
it('treats a QC rejection as completed but keeps the negative result for aggregation', function () {
|
|
33
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { ec_has_detail_page: 'yes', qc_approval_status: false });
|
|
34
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
35
|
+
expect((0, approval_engine_1.getDepartmentEffectiveStatuses)(approval)).toEqual([true, true, true, true, false]);
|
|
36
|
+
});
|
|
37
|
+
it('maps QC process records to the QC material approval field', function () {
|
|
38
|
+
expect((0, material_1.getApproverFieldByType)(consts_1.ProcessApprovalType.QC)).toBe('qc_approval_status');
|
|
39
|
+
});
|
|
40
|
+
it('resolves QC as an eligible postponed review department', function () {
|
|
41
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { ec_has_detail_page: 'yes', qc_reviewer: ['qc-user'], handler_qc: ['qc-user'], qc_approval_status: false });
|
|
42
|
+
expect((0, approval_engine_1.getPostponeReviewDepartmentType)(approval, [{ type: consts_1.ProcessApprovalType.QC }], 'qc-user')).toBe(consts_1.ProcessApprovalType.QC);
|
|
43
|
+
});
|
|
44
|
+
it.each([
|
|
45
|
+
[{ pls_km_files: ['pls-1'], sra_approval_status: false, qc_approval_status: true }, true],
|
|
46
|
+
[{ pls_km_files: ['pls-1'], sra_approval_status: true, qc_approval_status: false }, true],
|
|
47
|
+
[{ pls_km_files: [], sra_approval_status: false, qc_approval_status: false }, false],
|
|
48
|
+
[{ pls_km_files: ['pls-1'], sra_approval_status: true, qc_approval_status: true }, false]
|
|
49
|
+
])('decides whether a rejected approval needs PLS AI review', function (approval, expected) {
|
|
50
|
+
expect((0, approval_engine_1.needsPLSReReview)(approval)).toBe(expected);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=qcParallelReview.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qcParallelReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/qcParallelReview.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var approval_engine_1 = require("../approval_engine");
|
|
5
|
+
var material_1 = require("../material");
|
|
6
|
+
var consts_1 = require("../consts");
|
|
7
|
+
var approvedDepartments = {
|
|
8
|
+
_id: 'approval-pre-qc',
|
|
9
|
+
current_step: consts_1.Step.departmental_review,
|
|
10
|
+
ec_has_detail_page: 'yes',
|
|
11
|
+
ns_approval_status: true,
|
|
12
|
+
legal_approval_status: true,
|
|
13
|
+
sra_approval_status: true,
|
|
14
|
+
ca_approval_status: true
|
|
15
|
+
};
|
|
16
|
+
describe('QC pre review (QC预审)', function () {
|
|
17
|
+
it('keeps the QC cycle pending while the pre reviewer has not decided', function () {
|
|
18
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user', pre_qc_approval_status: '', qc_approval_status: '' });
|
|
19
|
+
expect((0, approval_engine_1.isDeptReviewComplete)(approval, 'qc')).toBe(false);
|
|
20
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
it('keeps the QC cycle pending after the pre review passed but before the formal review', function () {
|
|
23
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user', pre_qc_approval_status: true, qc_approval_status: '' });
|
|
24
|
+
expect((0, approval_engine_1.isDeptReviewComplete)(approval, 'qc')).toBe(false);
|
|
25
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(false);
|
|
26
|
+
});
|
|
27
|
+
it('completes the QC cycle when both the pre review and the formal review passed', function () {
|
|
28
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user', pre_qc_approval_status: true, qc_approval_status: true });
|
|
29
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
30
|
+
expect((0, approval_engine_1.getDepartmentEffectiveStatuses)(approval)).toEqual([true, true, true, true, true]);
|
|
31
|
+
});
|
|
32
|
+
it('ends the QC cycle as rejected when the pre review rejects, without waiting for the formal review', function () {
|
|
33
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user', pre_qc_approval_status: false, qc_approval_status: '' });
|
|
34
|
+
expect((0, approval_engine_1.isDeptReviewComplete)(approval, 'qc')).toBe(true);
|
|
35
|
+
expect((0, approval_engine_1.getDeptEffectiveStatus)(approval, 'qc')).toBe(false);
|
|
36
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
37
|
+
expect((0, approval_engine_1.getDepartmentEffectiveStatuses)(approval)).toEqual([true, true, true, true, false]);
|
|
38
|
+
});
|
|
39
|
+
it('falls back to the formal QC review when no QC pre reviewer is configured', function () {
|
|
40
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { qc_approval_status: true });
|
|
41
|
+
expect((0, approval_engine_1.isDeptReviewComplete)(approval, 'qc')).toBe(true);
|
|
42
|
+
expect((0, approval_engine_1.areDepartmentReviewsComplete)(approval)).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
it('only counts the QC pre reviewer when the approval contains a product detail page', function () {
|
|
45
|
+
var withDetailPage = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user' });
|
|
46
|
+
var withoutDetailPage = tslib_1.__assign(tslib_1.__assign({}, withDetailPage), { ec_has_detail_page: 'no' });
|
|
47
|
+
expect((0, approval_engine_1.hasAnyPreReviewer)(withDetailPage, consts_1.Step.departmental_review)).toBe(true);
|
|
48
|
+
expect((0, approval_engine_1.hasAnyPreReviewer)(withoutDetailPage, consts_1.Step.departmental_review)).toBe(false);
|
|
49
|
+
expect((0, approval_engine_1.getPreReviewStatuses)(withDetailPage).map(function (item) { return item.dept; })).toContain('QC');
|
|
50
|
+
expect((0, approval_engine_1.getPreReviewStatuses)(withoutDetailPage).map(function (item) { return item.dept; })).not.toContain('QC');
|
|
51
|
+
});
|
|
52
|
+
it('does not push QC into the formal review when its pre review is still in charge', function () {
|
|
53
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_ns_reviewer: 'pre-ns-user', pre_legal_reviewer: 'pre-legal-user', pre_sra_reviewer: 'pre-sra-user', pre_ca_reviewer: 'pre-ca-user', pre_qc_reviewer: 'pre-qc-user', qc_approval_status: '' });
|
|
54
|
+
expect((0, approval_engine_1.hasNonPreReviewDepartments)(approval)).toBe(false);
|
|
55
|
+
expect((0, approval_engine_1.hasNonPreReviewDepartments)(tslib_1.__assign(tslib_1.__assign({}, approval), { pre_qc_reviewer: null }))).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('maps QC pre review process records to the QC pre review field', function () {
|
|
58
|
+
expect((0, material_1.getApproverFieldByType)(consts_1.ProcessApprovalType.PreQC)).toBe('pre_qc_approval_status');
|
|
59
|
+
});
|
|
60
|
+
it('resolves QC预审 as an eligible postponed review department', function () {
|
|
61
|
+
var approval = tslib_1.__assign(tslib_1.__assign({}, approvedDepartments), { pre_qc_reviewer: 'pre-qc-user', handler_preqc: ['pre-qc-user'], pre_qc_approval_status: false });
|
|
62
|
+
expect((0, approval_engine_1.getPostponeReviewDepartmentType)(approval, [{ type: consts_1.ProcessApprovalType.PreQC }], 'pre-qc-user')).toBe(consts_1.ProcessApprovalType.PreQC);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=qcPreReview.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qcPreReview.test.js","sourceRoot":"","sources":["../../../src/methods/__tests__/qcPreReview.test.ts"],"names":[],"mappings":"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"}
|