|
|
@@ -27,7 +27,7 @@ test('payment chase renders payment and protocol payloads with their native deta
|
|
|
})
|
|
|
|
|
|
assert.equal(paymentSections[0].key, 'summary')
|
|
|
- assert.equal(paymentSections[1].cards.length, 1)
|
|
|
+ assert.equal(paymentSections.find((section) => section.key === 'schedules'), undefined)
|
|
|
assert.equal(protocolSections[0].key, 'protocol')
|
|
|
})
|
|
|
|
|
|
@@ -111,12 +111,16 @@ test('protocol adapters preserve nested detail sections', () => {
|
|
|
'customer',
|
|
|
'samples',
|
|
|
'payment',
|
|
|
- 'storageCert',
|
|
|
- 'insurance',
|
|
|
+ 'refundRecords',
|
|
|
'audits',
|
|
|
- 'statusChange',
|
|
|
- 'attachments'
|
|
|
+ 'attachments',
|
|
|
+ 'statusChange'
|
|
|
])
|
|
|
+ const protocolLabels = protocol.flatMap((section) => (section.fields || []).map((field) => field.label))
|
|
|
+ assert.ok(!protocolLabels.includes('协议编号'))
|
|
|
+ assert.ok(protocolLabels.includes('母亲姓名'))
|
|
|
+ assert.ok(!protocolLabels.includes('新生儿评分(5分钟)'))
|
|
|
+ assert.equal(protocol.at(-1).key, 'statusChange')
|
|
|
})
|
|
|
|
|
|
test('attachment-bearing detail adapters expose typed values instead of path text', () => {
|
|
|
@@ -135,14 +139,9 @@ test('attachment-bearing detail adapters expose typed values instead of path tex
|
|
|
const payment = getMarketModule('payment').detailSections({
|
|
|
schedules: [{ transfers: [{ transferAttachments: 'payment-proof.png' }] }]
|
|
|
})
|
|
|
- const paymentFiles = payment[1].cards[0].cards[0].fields.find(
|
|
|
- (field) => field.label === '转账凭证'
|
|
|
- )
|
|
|
- assert.deepEqual(paymentFiles, {
|
|
|
- label: '转账凭证',
|
|
|
- type: 'attachments',
|
|
|
- value: 'payment-proof.png'
|
|
|
- })
|
|
|
+ assert.equal(payment.find((section) => section.key === 'schedules'), undefined)
|
|
|
+ assert.equal(payment.length, 1)
|
|
|
+ assert.equal(payment[0].key, 'summary')
|
|
|
|
|
|
const presign = getMarketModule('presign').detailSections({
|
|
|
transfers: [{ transferAttachments: 'deposit-proof.png' }]
|
|
|
@@ -217,7 +216,7 @@ test('payment detail recognizes the converted cell-storage protocol status', ()
|
|
|
assert.equal(detail[0].fields.find((field) => field.label === '协议状态').value, '转细胞存储')
|
|
|
})
|
|
|
|
|
|
-test('payment detail presents real backend progress, schedule statuses, and combined pay mode', () => {
|
|
|
+test('payment detail presents real backend progress and combined pay mode in summary only', () => {
|
|
|
const sections = getMarketModule('payment').detailSections({
|
|
|
payMode: 'djfq',
|
|
|
paymentProgress: '部分已缴',
|
|
|
@@ -228,13 +227,10 @@ test('payment detail presents real backend progress, schedule statuses, and comb
|
|
|
]
|
|
|
})
|
|
|
const summary = sections.find((section) => section.key === 'summary')
|
|
|
- const schedules = sections.find((section) => section.key === 'schedules').cards
|
|
|
|
|
|
+ assert.equal(sections.find((section) => section.key === 'schedules'), undefined)
|
|
|
assert.equal(summary.fields.find((field) => field.label === '缴费方式').value, '趸交+分期')
|
|
|
assert.equal(summary.fields.find((field) => field.label === '缴费进度').value, '部分已缴')
|
|
|
- assert.equal(schedules.find((card) => card.key === 'open').statusText, '待缴清')
|
|
|
- assert.equal(schedules.find((card) => card.key === 'cleared').statusText, '已缴清')
|
|
|
- assert.equal(schedules.find((card) => card.key === 'void').statusText, '已作废')
|
|
|
})
|
|
|
|
|
|
test('payment progress dfj aligns with web-admin samplePaymentProgress 待缴费', () => {
|
|
|
@@ -278,13 +274,12 @@ test('protocol read-only history uses Web audit and void type labels', () => {
|
|
|
|
|
|
assert.equal(audits.cards[0].statusText, '审核退回')
|
|
|
assert.equal(
|
|
|
- audits.cards[0].fields.find((field) => field.label === '审核状态').value,
|
|
|
- '审核退回'
|
|
|
- )
|
|
|
- assert.equal(
|
|
|
- status.fields.find((field) => field.label === '作废类型').value,
|
|
|
- '租户自定义作废'
|
|
|
+ audits.cards[0].fields.find((field) => field.label === '审核状态'),
|
|
|
+ undefined
|
|
|
)
|
|
|
+ assert.equal(status.fields.length, 1)
|
|
|
+ assert.equal(status.fields[0].value, '暂无状态变更记录')
|
|
|
+ assert.equal(status.cards.length, 0)
|
|
|
})
|
|
|
|
|
|
test('donation detail shows void type and preserves unknown original values', () => {
|
|
|
@@ -292,15 +287,19 @@ test('donation detail shows void type and preserves unknown original values', ()
|
|
|
source: 'research_donation',
|
|
|
basic: {
|
|
|
donationStatus: 'yzf',
|
|
|
+ voidTime: '2026-10-01 09:30:00',
|
|
|
+ voidDesc: '客户申请',
|
|
|
voidType: 'legacy-unknown',
|
|
|
voidTypeLabel: 'legacy-unknown'
|
|
|
}
|
|
|
})
|
|
|
const status = sections.find((section) => section.key === 'statusChange')
|
|
|
|
|
|
+ assert.equal(status.cards.length, 1)
|
|
|
+ assert.equal(status.cards[0].statusText, '作废')
|
|
|
assert.equal(
|
|
|
- status.fields.find((field) => field.label === '作废类型').value,
|
|
|
- 'legacy-unknown'
|
|
|
+ status.cards[0].fields.find((field) => field.label === '变更说明').value,
|
|
|
+ '作废类型:legacy-unknown;客户申请'
|
|
|
)
|
|
|
})
|
|
|
|
|
|
@@ -342,7 +341,7 @@ test('detail adapters hide unresolved references and dictionary codes but preser
|
|
|
...(section.fields || []).map((field) => field.value),
|
|
|
...(section.cards || []).flatMap((card) => card.fields.map((field) => field.value))
|
|
|
])
|
|
|
- assert.ok(values.includes('P-RAW-1'))
|
|
|
+ assert.ok(!values.includes('P-RAW-1'))
|
|
|
assert.ok(values.includes('S-RAW-1'))
|
|
|
assert.ok(values.includes('未知人员'))
|
|
|
assert.ok(values.includes('未知'))
|
|
|
@@ -360,6 +359,7 @@ test('detail adapters hide unresolved references and dictionary codes but preser
|
|
|
assert.equal(freight[0].fields.find((field) => field.label === '创建人').value, '未知人员')
|
|
|
assert.equal(freight[1].cards[0].fields.find((field) => field.label === '样本编码').value, 'S-RAW-2')
|
|
|
assert.equal(freight[1].cards[0].fields.find((field) => field.label === '来源').value, '未知')
|
|
|
+ assert.ok(!freight[1].cards[0].fields.some((field) => field.label === '协议单号'))
|
|
|
|
|
|
const presign = getMarketModule('presign').detailSections({
|
|
|
protocolNo: 'P-RAW-2', regionId: 'region-raw', regionName: 'region-raw',
|
|
|
@@ -368,7 +368,7 @@ test('detail adapters hide unresolved references and dictionary codes but preser
|
|
|
payMode: 'raw-pay-mode', orderStatus: 'raw-order-status',
|
|
|
transfers: [{ transferType: 'raw-transfer', payStatus: 'raw-pay-status' }]
|
|
|
})
|
|
|
- assert.equal(presign[0].fields.find((field) => field.label === '协议编号').value, 'P-RAW-2')
|
|
|
+ assert.ok(!presign[0].fields.some((field) => field.label === '协议编号'))
|
|
|
assert.equal(presign[0].fields.find((field) => field.label === '采集地区').value, '未知')
|
|
|
assert.equal(presign[0].fields.find((field) => field.label === '市场专员').value, '未知人员')
|
|
|
assert.equal(presign[0].fields.find((field) => field.label === '缴费方式').value, '未知')
|
|
|
@@ -377,14 +377,23 @@ test('detail adapters hide unresolved references and dictionary codes but preser
|
|
|
assert.equal(presign[1].cards[0].statusText, '未知')
|
|
|
|
|
|
const payment = getMarketModule('payment').detailSections({
|
|
|
- protocolNo: 'P-RAW-3', payMode: 'raw-pay-mode', protocolStatus: 'raw-status',
|
|
|
- progressStatus: 'raw-progress', schedules: [{ scheduleStatus: 'raw-schedule', transfers: [{ transferType: 'raw-transfer', payStatus: 'raw-pay-status' }] }]
|
|
|
+ protocolNo: 'P-RAW-3',
|
|
|
+ motherName: '客户甲',
|
|
|
+ sampleCode: 'S-RAW-3',
|
|
|
+ payMode: 'raw-pay-mode',
|
|
|
+ protocolStatus: 'raw-status',
|
|
|
+ progressStatus: 'raw-progress',
|
|
|
+ schedules: [{ scheduleStatus: 'raw-schedule', transfers: [{ transferType: 'raw-transfer', payStatus: 'raw-pay-status' }] }]
|
|
|
})
|
|
|
+ const paymentLabels = payment.flatMap((section) => (section.fields || []).map((field) => field.label))
|
|
|
const paymentValues = payment.flatMap((section) => [
|
|
|
...(section.fields || []).map((field) => field.value),
|
|
|
...(section.cards || []).flatMap((card) => [card.statusText, ...(card.cards || []).flatMap((nested) => [nested.statusText, ...nested.fields.map((field) => field.value)])])
|
|
|
])
|
|
|
- assert.ok(paymentValues.includes('P-RAW-3'))
|
|
|
+ assert.ok(!paymentLabels.includes('协议号'))
|
|
|
+ assert.ok(!paymentValues.includes('P-RAW-3'))
|
|
|
+ assert.ok(paymentValues.includes('客户甲'))
|
|
|
+ assert.ok(paymentValues.includes('S-RAW-3'))
|
|
|
for (const raw of ['raw-pay-mode', 'raw-status', 'raw-progress', 'raw-schedule', 'raw-transfer', 'raw-pay-status']) {
|
|
|
assert.ok(!paymentValues.includes(raw), `must not display ${raw}`)
|
|
|
}
|