@getjones/test-infra 2.8.15 → 2.9.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getjones/test-infra",
3
- "version": "2.8.15",
3
+ "version": "2.9.0",
4
4
  "description": "Providing internal and openapi interface",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -4,6 +4,7 @@ const threadScheduler = require('../../../saas/internal-api/thread-scheduler/run
4
4
  const timeUtils = require('../../utils/timeUtils');
5
5
  const httpResponseStatusCodes = require('../../../common/httpResponseStatusCodes.json');
6
6
  const contractors = require('../../../saas/internal-api/contractors');
7
+ const compliance = require('../../../saas/internal-api/compliance');
7
8
 
8
9
  const makeRecordNotResponsive = async function(recordId, context, { isTenant } = {}) {
9
10
  const dates = isTenant ?
@@ -11,7 +12,7 @@ const makeRecordNotResponsive = async function(recordId, context, { isTenant } =
11
12
  timeUtils.getInvitationDatesForNotResponsiveVendor();
12
13
 
13
14
  for (const date of dates) {
14
- await updateInviteDate(recordId, date, context);
15
+ await updateLastInviteActionDate(recordId, date, context);
15
16
  }
16
17
  };
17
18
 
@@ -32,6 +33,34 @@ const updateInviteDate = async function(recordId, inviteDate, context) {
32
33
  await timeUtils.waitFor(2.5).seconds; // calls for the same records can override each other
33
34
  };
34
35
 
36
+ const updateLastInviteActionDate = async function(recordId, customDate, context) {
37
+ await timeUtils.waitFor(1).seconds;
38
+ /*
39
+ To run the reminders mails successfully we must first update the compliance audit actions date,
40
+ Since the thread scheduler will trigger the logic of the reminders mails
41
+ only if last invite action date will be equal or after compliance audit actions date
42
+ */
43
+ const updateComplianceAuditResponse = await compliance.services.audit.updateComplianceAuditActionsDate(recordId, customDate, context);
44
+
45
+ if (updateComplianceAuditResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
46
+ throw new Error(`Compliance audit date could not be updated\n${updateComplianceAuditResponse}`);
47
+ }
48
+
49
+ const updateLastInviteActionResponse = await contractors.services.updateLastInviteActionDate(recordId, customDate, context);
50
+
51
+ if (updateLastInviteActionResponse.status !== httpResponseStatusCodes.NO_CONTENT) {
52
+ throw new Error(`Record invite date could not be updated\n${updateLastInviteActionResponse}`);
53
+ }
54
+
55
+ const threadSchedulerResponse = await threadScheduler.runForRecords([recordId]);
56
+
57
+ if (threadSchedulerResponse.status !== httpResponseStatusCodes.OK) {
58
+ throw new Error(`Thread scheduler has failed to run\n${threadSchedulerResponse}`);
59
+ }
60
+
61
+ await timeUtils.waitFor(2.5).seconds; // calls for the same records can override each other
62
+ };
63
+
35
64
  const runOverAllRenewalDatesForRecord = async function(recordId, policyName) {
36
65
  const dates = timeUtils.getAutomaticRenewalsExpirationDates();
37
66
 
@@ -68,5 +97,6 @@ module.exports = {
68
97
  runOverAllRenewalDatesForRecord,
69
98
  updateInviteDate,
70
99
  updatePolicyExpiryDateForRecord,
71
- getHistoryEvents
100
+ getHistoryEvents,
101
+ updateLastInviteActionDate
72
102
  };
@@ -1,9 +1,10 @@
1
1
  const { getEnv, getSystemUserIdentity } = require('../../env');
2
- const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
3
2
  const auditConfigs = require('../../defaults/configs/auditConfigs');
4
3
 
5
4
  const { credentials } = getEnv();
6
5
 
6
+ const auditApi = require('../../saas/internal-api/compliance/api/audit/audit.api');
7
+
7
8
  const complianceStatuses = {
8
9
  complaint: 'complaint',
9
10
  notCompliant: 'notCompliant',
@@ -43,16 +44,16 @@ const getAuditMetadata = async (
43
44
  const isReauditResponse = await isReaudit(recordId, auditorContext);
44
45
  metadata.isReaudit = isReauditResponse.data.isReaudit;
45
46
 
46
- const recordDetailsResponse = await auditApi.getAuditRecordModel(recordId, auditorContext);
47
- const recordDetails = recordDetailsResponse.data;
47
+ const recordDetailsResponse = await auditApi.getContractorDetailsForAudit(recordId, auditorContext);
48
+ const { vendorDetails } = recordDetailsResponse.data;
48
49
 
49
- metadata.certificateId = recordDetails.certificateDetails.certificateuploadId;
50
+ metadata.certificateId = vendorDetails.certificateDetails.certificateuploadId;
50
51
  metadata.auditDates = {
51
52
  contractorId: recordId,
52
- contractorDateModified: recordDetails.dateModified,
53
+ contractorDateModified: vendorDetails.dateModified,
53
54
  dateStartedAudit: recordDetailsResponse.dateStartedAudit,
54
- contractorOverrideDateModified: recordDetails.contractorOverrideDateModified,
55
- contractCreateDate: recordDetails.contractCreateDate
55
+ contractorOverrideDateModified: vendorDetails.contractorOverrideDateModified,
56
+ contractCreateDate: vendorDetails.contractCreateDate
56
57
  };
57
58
 
58
59
  metadata.auditorId = await getAuditorId();
@@ -115,6 +115,10 @@ const convertDateToLongInt = value => {
115
115
  return Date.parse(value);
116
116
  };
117
117
 
118
+ const convertDateStringFormatToISOString = dateStringFormat => {
119
+ return new Date(dateStringFormat).toISOString();
120
+ };
121
+
118
122
  module.exports = {
119
123
  formats,
120
124
  getOneYearAgoDate,
@@ -147,5 +151,6 @@ module.exports = {
147
151
  convertDateToNewFormat,
148
152
  getOneWeekAgoDate,
149
153
  getOneWeekAheadDate,
150
- convertDateToLongInt
154
+ convertDateToLongInt,
155
+ convertDateStringFormatToISOString
151
156
  };
@@ -1,20 +1,22 @@
1
1
  const requests = require('../../../../../common/requests/cookieAuth/requests');
2
2
  const { backendUrl } = require('../../../../../env').getEnv();
3
3
 
4
+ const { convertDateStringFormatToISOString } = require('../../../../../common/utils/timeUtils');
5
+
4
6
  const Endpoints = {
5
7
  auditorContractorList: `${backendUrl}/saas/auditor/contractors`,
6
8
  audit: `${backendUrl}/saas/auditor/contractors/submit/audits`,
7
- enterAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
8
- getAuditRecordModelByRecordId: recordId => `${backendUrl}/saas/auditor/record/${recordId}/audit-record`,
9
+ contractorDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/master-audit`,
9
10
  requirementDetailsForAudit: contractorId => `${backendUrl}/saas/auditor/contractor/${contractorId}/requirement`,
10
11
  isReaudit: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/isreaudit`,
11
12
  revertCoi: contractorId => `${backendUrl}/saas/auditor/contractors/${contractorId}/coi/revert`,
12
13
  wrongCoi: `${backendUrl}/saas/coi/wrong-coi`,
13
- getAudit: recordId => `${backendUrl}/saas/audit/${recordId}`
14
+ getAudit: recordId => `${backendUrl}/saas/audit/${recordId}`,
15
+ updateComplianceAuditActionsDate: recordId => `${backendUrl}/saas/automation/audit/record/${recordId}/compliance-audit-actions/date`
14
16
  };
15
17
 
16
18
  const audit = async (contractorId, auditRequestModel, context) => {
17
- await enterAudit(contractorId, {}, context);
19
+ await getContractorDetailsForAudit(contractorId, {}, context);
18
20
  return submitAudit(auditRequestModel, context);
19
21
  };
20
22
 
@@ -34,12 +36,8 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
34
36
  return requests.postRequestHandler(Endpoints.auditorContractorList, auditListParametersModel, context);
35
37
  };
36
38
 
37
- const enterAudit = (contractorId, context) => {
38
- return requests.getRequestHandler(Endpoints.enterAudit(contractorId), {}, context);
39
- };
40
-
41
- const getAuditRecordModel = (recordId, context) => {
42
- return requests.getRequestHandler(Endpoints.getAuditRecordModelByRecordId(recordId), {}, context);
39
+ const getContractorDetailsForAudit = (contractorId, context) => {
40
+ return requests.getRequestHandler(Endpoints.contractorDetailsForAudit(contractorId), {}, context);
43
41
  };
44
42
 
45
43
  const getRequirementDetailsForAudit = (contractorId, context) => {
@@ -55,6 +53,11 @@ const wrongCoi = (recordId, context) => {
55
53
  return requests.getRequestHandler(Endpoints.wrongCoi, params, context);
56
54
  };
57
55
 
56
+ const updateComplianceAuditActionsDate = (recordId, customComplianceAuditActionsDate, context) => {
57
+ const url = `${Endpoints.updateComplianceAuditActionsDate(recordId)}?customComplianceAuditActionsDate=${convertDateStringFormatToISOString(customComplianceAuditActionsDate)}`;
58
+ return requests.putRequestHandler(url, {}, context);
59
+ };
60
+
58
61
  module.exports = {
59
62
  audit,
60
63
  submitAudit,
@@ -62,8 +65,8 @@ module.exports = {
62
65
  wrongCoi,
63
66
  isReaudit,
64
67
  getAuditorContractorList,
65
- enterAudit,
66
- getAuditRecordModel,
68
+ getContractorDetailsForAudit,
67
69
  getRequirementDetailsForAudit,
68
- getAuditByRecordId
70
+ getAuditByRecordId,
71
+ updateComplianceAuditActionsDate
69
72
  };
@@ -1,6 +1,6 @@
1
1
  const auditApi = require('./audit.api');
2
2
  const { AuditRequestModel, AuditListParametersModel, AuditDatesModel } = require('../../models/audit/audit.model');
3
- const { validateType } = require('../../../../../common/validations/typeValidations');
3
+ const { validateType, validateDateString } = require('../../../../../common/validations/typeValidations');
4
4
  const auditUtil = require('../../utils/auditUtil');
5
5
  const dataTypeUtils = require('../../../../../common/utils/dataTypeUtils');
6
6
  const { cloneObject } = require('../../../../../common/utils/objectUtils');
@@ -34,12 +34,8 @@ const getAuditorContractorList = (auditListParametersModel, context) => {
34
34
  return auditApi.getAuditorContractorList(auditListParametersModel, context);
35
35
  };
36
36
 
37
- const enterAudit = (contractorId, context) => {
38
- return auditApi.enterAudit(contractorId, context);
39
- };
40
-
41
- const getAuditRecordModel = (recordId, context) => {
42
- return auditApi.getAuditRecordModel(recordId, context);
37
+ const getContractorDetailsForAudit = (contractorId, context) => {
38
+ return auditApi.getContractorDetailsForAudit(contractorId, context);
43
39
  };
44
40
 
45
41
  const getRequirementDetailsForAudit = (contractorId, context) => {
@@ -148,6 +144,11 @@ const auditRecord = async function(
148
144
  return auditResponse;
149
145
  };
150
146
 
147
+ const updateComplianceAuditActionsDate = (recordId, customLastInviteActionDate, context) => {
148
+ validateDateString(customLastInviteActionDate, Date);
149
+ return auditApi.updateComplianceAuditActionsDate(recordId, customLastInviteActionDate, context);
150
+ };
151
+
151
152
  module.exports = {
152
153
  audit,
153
154
  submitAudit,
@@ -155,12 +156,12 @@ module.exports = {
155
156
  isReaudit,
156
157
  wrongCoi,
157
158
  getAuditorContractorList,
158
- enterAudit,
159
+ getContractorDetailsForAudit,
159
160
  getRequirementDetailsForAudit,
160
- getAuditRecordModel,
161
161
  getAuditEntities,
162
162
  getAuditMetadata,
163
163
  getAuditByRecordId,
164
164
  getAuditRequestModel,
165
- auditRecord
165
+ auditRecord,
166
+ updateComplianceAuditActionsDate
166
167
  };
@@ -60,23 +60,6 @@ const ATTRIBUTE_NAMES_MAP = {
60
60
  signature: 'signature'
61
61
  };
62
62
 
63
- const auditTriggerType = {
64
- newAudit: 'NEW_AUDIT',
65
- changeRequirements: 'CHANGE_REQUIREMENTS',
66
- updateRequirements: 'UPDATE_REQUIREMENTS',
67
- updateRequirementsWithNotifications: 'ENTITY_CHANGED',
68
- gaps: 'GAPS',
69
- renewal: 'RENEWAL'
70
- };
71
-
72
- const auditStatus = {
73
- pending: 'PENDING',
74
- inProgress: 'IN_PROGRESS',
75
- onHold: 'ON_HOLD',
76
- done: 'DONE',
77
- canceled: 'CANCELED'
78
- };
79
-
80
63
  module.exports = {
81
64
  DEFAULT_POLICY_ID,
82
65
  POLICY_NAMES_MAP,
@@ -84,7 +67,5 @@ module.exports = {
84
67
  COI_AUDIT_STATUSES,
85
68
  AUDITOR_ROLE,
86
69
  AUDIT_ENTITY_STATUSES,
87
- VALID_SCORES,
88
- auditTriggerType,
89
- auditStatus
70
+ VALID_SCORES
90
71
  };
@@ -1,5 +1,6 @@
1
1
  const requests = require('../../../../common/requests/cookieAuth/requests');
2
2
  const { backendUrl } = require('../../../../env').getEnv();
3
+ const { convertDateStringFormatToISOString } = require('../../../../common/utils/timeUtils');
3
4
 
4
5
  const Endpoints = {
5
6
  create: `${backendUrl}/saas/contractors/invite`,
@@ -19,6 +20,7 @@ const Endpoints = {
19
20
  changeRequirement: `${backendUrl}/saas/contractor/requirement`,
20
21
  updateVendorExpiryDate: contractorId => `${backendUrl}/_saas/automation/contractor/${contractorId}/expiry-date`,
21
22
  updateContractorInviteDate: contractorId => `${backendUrl}/_saas/automation/contractor/${contractorId}/invite-date`,
23
+ updateLastInviteActionDate: recordId => `${backendUrl}/saas/automation/invite/record/${recordId}/last-invite-action/date`,
22
24
  searchInAutocomplete: ({ tabId, searchWord }) =>
23
25
  `${backendUrl}/saas/requests/search/audited?&tabId=${tabId}&searchWord=${searchWord}`,
24
26
  automationUpdateContractorUploadDate: contractorId => `${backendUrl}/saas/automation/contractor/${contractorId}/upload-date`,
@@ -126,6 +128,11 @@ const getLinkedProjectsCount = async (recordId, context) => {
126
128
  return await requests.getRequestHandler(Endpoints.linkedProjectsCount(recordId), {}, context);
127
129
  };
128
130
 
131
+ const updateLastInviteActionDate = (recordId, customLastInviteActionDate, context) => {
132
+ const url = `${Endpoints.updateLastInviteActionDate(recordId)}?customLastInviteActionDate=${convertDateStringFormatToISOString(customLastInviteActionDate)}`;
133
+ return requests.putRequestHandler(url, {}, context);
134
+ };
135
+
129
136
  module.exports = {
130
137
  createContractor,
131
138
  changeRequirement,
@@ -148,5 +155,6 @@ module.exports = {
148
155
  resendInvitation,
149
156
  muteNotifications,
150
157
  unmuteNotifications,
151
- getLinkedProjectsCount
158
+ getLinkedProjectsCount,
159
+ updateLastInviteActionDate
152
160
  };
@@ -1,7 +1,7 @@
1
1
  const contractorsAPI = require('./contractors.api');
2
2
  const { CreateContractorModel } = require('../models/create.contractor.model');
3
3
  const { RequestModel } = require('../../requests/models/edit.request.model');
4
- const { validateType } = require('../../../../common/validations/typeValidations');
4
+ const { validateType, validateDateString } = require('../../../../common/validations/typeValidations');
5
5
  const { RecordModifyDateVerificationModel } = require('../models/verification.contractor.model');
6
6
  const { AssignRequirementModel } = require('../models/assign.requirement.model');
7
7
  const httpResponseStatusCodes = require('../../../../common/httpResponseStatusCodes.json');
@@ -54,6 +54,11 @@ const updateInviteDate = (contractorId, inviteDate, context) => {
54
54
  return contractorsAPI.updateInviteDate(contractorId, inviteDate, context);
55
55
  };
56
56
 
57
+ const updateLastInviteActionDate = (recordId, customLastInviteActionDate, context) => {
58
+ validateDateString(customLastInviteActionDate, Date);
59
+ return contractorsAPI.updateLastInviteActionDate(recordId, customLastInviteActionDate, context);
60
+ };
61
+
57
62
  const getContractorsByTabId = (tabId, context, activityStatus = 'Active') => {
58
63
  return contractorsAPI.getContractorsByTabId(tabId, context, activityStatus);
59
64
  };
@@ -184,5 +189,6 @@ module.exports = {
184
189
  assignRequirement,
185
190
  getAssignRequirementModel,
186
191
  getLinkedProjectsCount,
187
- restoreByRecordId
192
+ restoreByRecordId,
193
+ updateLastInviteActionDate
188
194
  };
Binary file