Merge branch 'test' of http://8.163.30.128:10082/java-project/baiyue-firstleg into test
This commit is contained in:
@@ -19,7 +19,7 @@ test('种子解析覆盖多行多值、函数括号及带逗号和引号的文
|
||||
|
||||
test('两个入口分别只操作八个主业务库与两个仓储业务库,包括限定名引用', () => {
|
||||
// 国内补齐订单/仓库流水表;海外含自有业务四表与当前运输、流水基线。
|
||||
for (const [sql, allowed, other, count] of [[cn, domesticSchemas, overseasSchemas, 229], [overseas, overseasSchemas, domesticSchemas, 234]]) {
|
||||
for (const [sql, allowed, other, count] of [[cn, domesticSchemas, overseasSchemas, 229], [overseas, overseasSchemas, domesticSchemas, 238]]) {
|
||||
assert.deepEqual([...sql.matchAll(/^CREATE DATABASE IF NOT EXISTS (\w+)/gm)].map(m => m[1]), allowed)
|
||||
assert.deepEqual([...new Set([...sql.matchAll(/^USE (\w+);/gm)].map(m => m[1]))], allowed)
|
||||
const body = sql.replace(/^--.*$/gm, '')
|
||||
@@ -121,6 +121,53 @@ test('同实托六表定义在模块和统一空库入口保持一致', () => {
|
||||
}
|
||||
})
|
||||
|
||||
test('海外费用资金与仓租四表在模块和统一空库基线保持一致', () => {
|
||||
const files = [
|
||||
'overseas-manual-fee-funding.sql',
|
||||
'storage-rent.sql',
|
||||
]
|
||||
const normalize = sql => ('USE baiyue_lastleg;\n' + sql).replace(/CREATE TABLE IF NOT EXISTS /g, 'CREATE TABLE ')
|
||||
const body = sql => sql.slice(sql.indexOf('(')).replace(/\r\n/g, '\n').replace(/[ \t]+/g, ' ').trim()
|
||||
const module = normalize(readFileSync(new URL('../../lastleg-service/src/main/resources/db/lastleg.sql', import.meta.url), 'utf8'))
|
||||
for (const source of files) {
|
||||
const original = normalize(readFileSync(new URL(`../../lastleg-service/src/main/resources/db/${source}`, import.meta.url), 'utf8'))
|
||||
for (const [key, ddl] of tableDefinitions(original)) {
|
||||
const name = key.split('.')[1]
|
||||
for (const target of [module, overseas]) assert.equal(body(table(target, 'baiyue_lastleg', name)), body(ddl), name)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
test('退货SKU换标保留原仓租份额的迁移快照', () => {
|
||||
const column = /storage_rent_shares_json LONGTEXT NULL COMMENT '原仓租批次迁移快照'/
|
||||
for (const path of ['lastleg-service/src/main/resources/db/lastleg.sql', 'lastleg-service/src/main/resources/db/return-sku-conversion.sql', 'deploy/sql/海外区域统一增量-MySQL8.sql']) {
|
||||
const ddl = readFileSync(new URL(`../../${path}`, import.meta.url), 'utf8')
|
||||
assert.match(ddl, column, path)
|
||||
}
|
||||
assert.match(table(overseas, 'baiyue_lastleg', 'll_return_sku_conversion'), column)
|
||||
})
|
||||
|
||||
test('拆柜成本分摊不强制产生自动客户应收', () => {
|
||||
assert.match(table(overseas, 'baiyue_lastleg', 'll_destuff_pallet_cost_allocation'), /fee_source_id bigint (?:DEFAULT )?NULL COMMENT '人工审核后关联的海外费用来源ID'/i)
|
||||
})
|
||||
|
||||
test('海外费用审核人和采购退款幂等约束完整保留在统一空库基线', () => {
|
||||
const fee = table(overseas, 'baiyue_lastleg', 'll_finance_fee_source')
|
||||
assert.match(fee, /reviewer_name varchar\(255\)(?: COLLATE \w+)? (?:DEFAULT )?NULL COMMENT '审核人名称快照'/i)
|
||||
const procurement = table(overseas, 'baiyue_lastleg', 'll_overseas_procurement_fee')
|
||||
assert.match(procurement, /idempotency_key VARCHAR\(128\) NULL COMMENT '退款请求幂等键,独立于业务单号'/i)
|
||||
assert.match(procurement, /UNIQUE KEY uk_ll_procurement_refund_request\s*\(order_id,\s*purpose,\s*idempotency_key\)/i)
|
||||
})
|
||||
|
||||
test('海外费用菜单只授予平台管理员,编辑与审核不由菜单隐式授予', () => {
|
||||
const menu = seedRows(cn, 'iam_permission').find(row => row.permission_code === 'platform:overseas-fee:list')
|
||||
assert.equal(menu.permission_type, 'MENU')
|
||||
assert.equal(menu.route_path, '/overseas-business/fees')
|
||||
const roles = seedRows(cn, 'iam_role')
|
||||
const grants = seedRows(cn, 'iam_role_permission').filter(row => row.permission_id === menu.id)
|
||||
assert.deepEqual(grants.map(row => roles.find(role => role.id === row.role_id).role_code), ['PLATFORM_ADMIN'])
|
||||
})
|
||||
|
||||
test('车辆报价与实测记录保留业务去重和不可变版本', () => {
|
||||
const booking = table(overseas, 'baiyue_lastleg', 'll_fleet_external_booking')
|
||||
assert.match(booking, /quote_source_json JSON NULL/i)
|
||||
@@ -175,7 +222,7 @@ test('平台管理员由外部bcrypt引导,强制首登改密且不创建客
|
||||
})
|
||||
|
||||
test('必要系统种子完整保留,但不写入示例资源与业务事实', () => {
|
||||
for (const [name, count] of Object.entries({ iam_role: 8, iam_permission: 440, iam_role_permission: 624,
|
||||
for (const [name, count] of Object.entries({ iam_role: 8, iam_permission: 441, iam_role_permission: 625,
|
||||
iam_data_scope: 7, wh_warehouse: 318, wh_warehouse_address: 318, wh_service_capability: 4,
|
||||
fl_fee_item: 112, fl_price_channel_catalog: 15, fl_price_origin_alias: 7, fl_price_warehouse_mapping: 4,
|
||||
file_export_task_guard: 1, fin_subject: 1 })) assert.equal(seedRows(cn, name).length, count, name)
|
||||
|
||||
Reference in New Issue
Block a user