优化
This commit is contained in:
@@ -9,6 +9,7 @@ const sqlPath = resolve(warehouseRoot, 'src/main/resources/db/warehouse-public-m
|
||||
const acceptedPath = resolve(warehouseRoot, 'src/main/resources/db/master-data/fba-public-addresses.accepted.csv')
|
||||
const rejectedPath = resolve(warehouseRoot, 'src/main/resources/db/master-data/fba-public-addresses.rejected.csv')
|
||||
const fixedWarehousePath = resolve(warehouseRoot, 'src/main/resources/db/master-data/platform-fixed-warehouses.csv')
|
||||
const unifiedSqlPath = resolve(warehouseRoot, '..', 'deploy/sql/头程数据库统一增量-MySQL8.sql')
|
||||
|
||||
function parseCsv(text) {
|
||||
const rows = []
|
||||
@@ -49,25 +50,22 @@ function parseCsv(text) {
|
||||
}
|
||||
|
||||
const sql = readFileSync(sqlPath, 'utf8')
|
||||
const unifiedSql = readFileSync(unifiedSqlPath, 'utf8')
|
||||
const accepted = parseCsv(readFileSync(acceptedPath, 'utf8'))
|
||||
const rejected = parseCsv(readFileSync(rejectedPath, 'utf8'))
|
||||
const fixedWarehouses = parseCsv(readFileSync(fixedWarehousePath, 'utf8'))
|
||||
|
||||
assert.equal(accepted.length, 252)
|
||||
assert.equal(rejected.length, 54)
|
||||
assert.equal(accepted.length, 314)
|
||||
assert.equal(rejected.length, 0)
|
||||
assert.equal(fixedWarehouses.length, 4)
|
||||
|
||||
const codes = new Set()
|
||||
const warehouseIds = new Set()
|
||||
const addressIds = new Set()
|
||||
for (const row of accepted) {
|
||||
assert.match(row.warehouse_code, /^[A-Z0-9]{3,5}$/)
|
||||
assert.ok(row.warehouse_code.trim())
|
||||
assert.equal(row.warehouse_code, row.warehouse_code.trim().toUpperCase())
|
||||
assert.ok(row.city.trim())
|
||||
assert.ok(row.state_province.trim())
|
||||
assert.ok(row.address_line1.trim())
|
||||
assert.ok(row.postal_code.trim())
|
||||
assert.ok(row.timezone.trim())
|
||||
if (row.source_internal_id) assert.match(row.source_internal_id, /^[A-Z0-9]{1,16}$/)
|
||||
assert.equal(row.country_code, 'US')
|
||||
assert.ok(!codes.has(row.warehouse_code), `duplicate code ${row.warehouse_code}`)
|
||||
assert.ok(!warehouseIds.has(row.warehouse_id_seed), `duplicate warehouse id ${row.warehouse_id_seed}`)
|
||||
@@ -75,10 +73,15 @@ for (const row of accepted) {
|
||||
codes.add(row.warehouse_code)
|
||||
warehouseIds.add(row.warehouse_id_seed)
|
||||
addressIds.add(row.address_id_seed)
|
||||
const internalCode = row.source_internal_id ? `'${row.source_internal_id}'` : 'NULL'
|
||||
const tuplePrefix = `(${row.warehouse_id_seed},${row.address_id_seed},'${row.warehouse_code}','${row.warehouse_name}',${internalCode},`
|
||||
assert.ok(sql.includes(tuplePrefix), `standalone SQL missing ${row.warehouse_code}`)
|
||||
assert.ok(unifiedSql.includes(tuplePrefix), `unified SQL missing ${row.warehouse_code}`)
|
||||
}
|
||||
|
||||
assert.ok(rejected.some((row) => row.reject_reason.includes('non_fba_business_node')))
|
||||
assert.equal(rejected.filter((row) => row.reject_reason.includes('timezone_pending_confirmation')).length, 1)
|
||||
assert.ok(accepted.some((row) => row.warehouse_code === 'FEDEX' && row.city === ''))
|
||||
assert.ok(accepted.some((row) => row.warehouse_code === '纽约仓一件代发' && row.source_internal_id === 'NJDF'))
|
||||
assert.equal(accepted.filter((row) => row.source_internal_id === '83').length, 2)
|
||||
|
||||
assert.deepEqual(fixedWarehouses.map((row) => row.warehouse_code), [
|
||||
'CN-YIWU-01',
|
||||
@@ -105,7 +108,9 @@ assert.match(sql, /FROM tmp_wh_fixed_platform_warehouse source[\s\S]+ON DUPLICAT
|
||||
|
||||
assert.match(sql, /CREATE TEMPORARY TABLE tmp_wh_fba_public_master_data/)
|
||||
assert.match(sql, /JOIN wh_warehouse warehouse\s+ON warehouse\.tenant_id = 0\s+AND warehouse\.warehouse_code = source\.warehouse_code/s)
|
||||
assert.match(sql, /ON DUPLICATE KEY UPDATE\s+warehouse_type = VALUES\(warehouse_type\),\s+country_code = VALUES\(country_code\),\s+timezone = VALUES\(timezone\),\s+updated_at = CURRENT_TIMESTAMP\(3\);/s)
|
||||
assert.match(sql, /ON DUPLICATE KEY UPDATE\s+internal_code = VALUES\(internal_code\),\s+warehouse_type = VALUES\(warehouse_type\),\s+country_code = VALUES\(country_code\),\s+timezone = VALUES\(timezone\),\s+updated_at = CURRENT_TIMESTAMP\(3\);/s)
|
||||
assert.match(sql, /internal_code VARCHAR\(16\) NULL/)
|
||||
assert.match(sql, /source\.internal_code/)
|
||||
assert.doesNotMatch(sql, /status\s*=\s*VALUES\(status\)/)
|
||||
assert.doesNotMatch(sql, /contact_name\s*=\s*VALUES\(contact_name\)/)
|
||||
assert.doesNotMatch(sql, /contact_phone\s*=\s*VALUES\(contact_phone\)/)
|
||||
|
||||
Reference in New Issue
Block a user