hotfix-add subgroup customer
This commit is contained in:
@@ -335,10 +335,16 @@ async function main() {
|
||||
`/api/crm/quotations/${draftQuotation.id}/approved-pdf`,
|
||||
{ method: 'POST' }
|
||||
);
|
||||
const previewData = await fetchWithAuth(
|
||||
baseUrl,
|
||||
superAdminCookies,
|
||||
`/api/crm/quotations/${approvedQuotation.id}/document-preview`
|
||||
);
|
||||
assert(
|
||||
nonApprovedGenerate.status === 400,
|
||||
`Draft quotation POST expected 400, got ${nonApprovedGenerate.status}`
|
||||
);
|
||||
assert(previewData.status === 200, `Document preview expected 200, got ${previewData.status}`);
|
||||
|
||||
const adminPreview = await fetchWithAuth(
|
||||
baseUrl,
|
||||
@@ -395,6 +401,7 @@ async function main() {
|
||||
|
||||
const pdfShape = estimatePageCount(approvedGet.bytes);
|
||||
const approvedSnapshot = persistence.quotation.approved_snapshot;
|
||||
const previewPayload = previewData.json?.preview;
|
||||
const templatePageCount = await queryTemplatePageCount(
|
||||
sql,
|
||||
persistence.quotation.approved_template_version_id
|
||||
@@ -432,6 +439,41 @@ async function main() {
|
||||
approvedSnapshot.documentData?.topics?.payment?.length >= 1,
|
||||
'approvedSnapshot is missing payment topic data'
|
||||
);
|
||||
assert(
|
||||
typeof previewPayload?.templateInput?.quotation_price === 'string',
|
||||
'templateInput quotation_price is not formatted string'
|
||||
);
|
||||
assert(
|
||||
typeof previewPayload?.templateInput?.quotation_date === 'string',
|
||||
'templateInput quotation_date is not formatted string'
|
||||
);
|
||||
assert(
|
||||
Array.isArray(previewPayload?.templateInput?.exclusion_data) &&
|
||||
previewPayload.templateInput.exclusion_data.length >= 1 &&
|
||||
Array.isArray(previewPayload.templateInput.exclusion_data[0]),
|
||||
'templateInput exclusion_data is not a non-empty string[][] table'
|
||||
);
|
||||
const dynamicTopicKeys = Object.keys(previewPayload?.templateInput ?? {}).filter(
|
||||
(key) => key.startsWith('topic_') || key.startsWith('item_topic_')
|
||||
);
|
||||
assert(dynamicTopicKeys.length >= 2, 'templateInput is missing dynamic topic keys');
|
||||
assert(
|
||||
Array.isArray(previewPayload?.documentData?.pdfme?.topic_inputs?.[dynamicTopicKeys[0]]),
|
||||
'documentData pdfme.topic_inputs is missing generated topic inputs'
|
||||
);
|
||||
const approvedPdfText = approvedGet.bytes.toString('latin1');
|
||||
assert(
|
||||
!approvedPdfText.includes('{exclusion_data}'),
|
||||
'Approved PDF still contains unresolved {exclusion_data}'
|
||||
);
|
||||
assert(
|
||||
!approvedPdfText.includes('{quotation_price}'),
|
||||
'Approved PDF still contains unresolved {quotation_price}'
|
||||
);
|
||||
assert(
|
||||
!approvedPdfText.includes('{item_topic}'),
|
||||
'Approved PDF still contains unresolved {item_topic}'
|
||||
);
|
||||
assert(
|
||||
approvedSnapshot.documentData?.approval?.approvers?.length >= 1,
|
||||
'approvedSnapshot is missing approval block data'
|
||||
@@ -471,6 +513,15 @@ async function main() {
|
||||
disposition: approvedGet.disposition,
|
||||
bytes: approvedGet.bytes.length
|
||||
},
|
||||
documentPreview: {
|
||||
status: previewData.status,
|
||||
quotationPrice: previewPayload?.templateInput?.quotation_price ?? null,
|
||||
quotationDate: previewPayload?.templateInput?.quotation_date ?? null,
|
||||
exclusionRows: Array.isArray(previewPayload?.templateInput?.exclusion_data)
|
||||
? previewPayload.templateInput.exclusion_data.length
|
||||
: 0,
|
||||
dynamicTopicKeys
|
||||
},
|
||||
nonApprovedPost: {
|
||||
status: nonApprovedGenerate.status,
|
||||
message: nonApprovedGenerate.json?.message ?? null
|
||||
|
||||
Reference in New Issue
Block a user