26 lines
1.4 KiB
JavaScript
26 lines
1.4 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import { readFileSync } from 'node:fs'
|
|
import test from 'node:test'
|
|
|
|
const api = readFileSync(new URL('./api/inboundPlans.ts', import.meta.url), 'utf8')
|
|
const routes = readFileSync(new URL('./routes.ts', import.meta.url), 'utf8')
|
|
const view = readFileSync(new URL('./views/InboundOrdersView.vue', import.meta.url), 'utf8')
|
|
|
|
test('activates the customer-scoped overseas inbound list and detail', () => {
|
|
assert.match(routes, /path: 'orders\/inbound'[\s\S]*?release: 'active'[\s\S]*?permission: 'merchant:warehouse:inbound:list'/)
|
|
assert.match(api, /\/merchant\/v1\/last-leg\/inbound-plans/)
|
|
assert.match(api, /encodeURIComponent\(planNo\)/)
|
|
assert.doesNotMatch(api, /\/platform\/|\/internal\/|customerId|tenantId/)
|
|
})
|
|
|
|
test('keeps actions first and exposes filters loading errors empty state pagination and business identifiers', () => {
|
|
assert.match(view, /<el-table-column label="操作"[^>]*fixed="left"/)
|
|
for (const token of ['planNo', 'inboundCode', 'destinationWarehouseCode', 'appointmentStatus', 'dispatchStatus', 'createdDates']) assert.match(view, new RegExp(token))
|
|
assert.match(view, /v-loading="loading"/)
|
|
assert.match(view, /type="error"/)
|
|
assert.match(view, /empty-text="暂无入库订单"/)
|
|
assert.match(view, /<el-pagination/)
|
|
assert.match(view, /detail\.planNo/)
|
|
assert.doesNotMatch(view, /planId|orderId|warehouseId|customerId/)
|
|
})
|