Files
loan-pricing/ruoyi-ui/tests/retail-display-fields.test.js

99 lines
3.6 KiB
JavaScript

const fs = require('fs')
const path = require('path')
const assert = require('assert')
function read(relativePath) {
return fs.readFileSync(path.join(__dirname, '..', relativePath), 'utf8')
}
const personalDetail = read('src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue')
const modelOutput = read('src/views/loanPricing/workflow/components/ModelOutputDisplay.vue')
function extractCard(source, className) {
const start = source.indexOf(`<el-card class="${className}">`)
const end = source.indexOf('</el-card>', start)
assert(start !== -1 && end !== -1, `缺少卡片: ${className}`)
return source.slice(start, end)
}
const summaryCard = extractCard(personalDetail, 'summary-card')
const detailCard = extractCard(personalDetail, 'detail-card')
const businessInfoStart = detailCard.indexOf('<h4 class="section-title">业务信息</h4>')
const basicInfo = detailCard.slice(0, businessInfoStart)
const businessInfo = detailCard.slice(businessInfoStart)
assert(
!basicInfo.includes('label="借款期限"')
&& businessInfo.includes('label="借款期限"')
&& businessInfo.includes('detailData.loanTerm'),
'个人详情页借款期限未展示在业务信息中'
)
;['期限', '担保方式', '产品最低利率下限'].forEach((label) => {
assert(summaryCard.includes(`label="${label}"`), `个人流程详情关键信息缺少字段: ${label}`)
})
;['基准利率', '浮动BP', '最终测算利率'].forEach((label) => {
assert(!summaryCard.includes(`label="${label}"`), `个人流程详情关键信息不应展示字段: ${label}`)
})
assert(
personalDetail.includes('formatRate(retailOutput && retailOutput.minRateProduct)'),
'个人流程详情关键信息未展示产品最低利率下限'
)
assert(
personalDetail.includes(':guar-type="detailData.guarType"'),
'个人模型输出未使用流程担保方式控制抵押物行'
)
const requiredRetailFields = [
'retailOutput.loanRateHistory',
'retailOutput.smoothRange',
'retailOutput.finalCalculateRate',
'retailOutput.referenceRate',
'retailOutput.branchBp',
'retailOutput.bpLoanUse',
'retailOutput.midPerGasDdc',
'retailOutput.bpPrinOverdue',
'retailOutput.bpIinterestOverdue',
'retailOutput.bpCardOverdue'
]
requiredRetailFields.forEach((field) => {
assert(modelOutput.includes(field), `模型输出缺少字段展示: ${field}`)
})
assert(
modelOutput.includes("this.resultItem('营业执照', this.formatBoolean(this.retailOutput.bizProof))"),
'个人风险度缺少营业执照或 BP_贷款用途关联展示'
)
assert(
basicInfo.includes('label="灰名单客户"')
&& basicInfo.includes('retailOutput && retailOutput.greyCust')
&& basicInfo.includes('label="黑名单客户"')
&& basicInfo.includes('retailOutput && retailOutput.blackCust'),
'个人流程详情基本信息缺少灰名单客户或黑名单客户'
)
assert(
!modelOutput.includes("this.resultItem('灰名单客户', this.formatBoolean(this.retailOutput.greyCust))")
&& !modelOutput.includes("this.resultItem('黑名单客户', this.formatBoolean(this.retailOutput.blackCust))")
&& !modelOutput.includes("'BP_灰名单与逾期', this.retailOutput.bpGreyOverdue"),
'个人风险度不应继续展示灰黑客户或旧聚合BP'
)
assert(
!basicInfo.includes('label="基准利率"')
&& !basicInfo.includes('retailOutput && retailOutput.baseLoanRate'),
'个人流程详情基本信息不应展示基准利率'
)
assert(
!detailCard.includes('label="运行模式"') && !modelOutput.includes('<h4 class="section-title">基本信息</h4>'),
'个人详情仍展示运行模式或模型输出基本信息'
)
console.log('retail display fields assertions passed')