test(firstleg): harden measurement demo package
This commit is contained in:
@@ -3,6 +3,11 @@ import { readFileSync } from 'node:fs'
|
||||
import test from 'node:test'
|
||||
|
||||
const source = readFileSync(new URL('inbound-measurement.mjs', import.meta.url), 'utf8')
|
||||
const read = (relativeUrl) => readFileSync(new URL(relativeUrl, import.meta.url), 'utf8')
|
||||
const labelTests = read('../../firstleg/src/test/java/com/baiyue/firstleg/service/InboundCartonLabelServiceTest.java')
|
||||
const measurementTests = read('../../firstleg/src/test/java/com/baiyue/firstleg/service/InboundMeasurementServiceTest.java')
|
||||
const cartonTests = read('../../firstleg/src/test/java/com/baiyue/firstleg/service/CartonMeasurementServiceTest.java')
|
||||
const reviewTests = read('../../firstleg/src/test/java/com/baiyue/firstleg/service/MeasurementReviewServiceTest.java')
|
||||
|
||||
test('measurement acceptance scans the stable box code frozen by first print', () => {
|
||||
assert.match(source, /const boxCode = `\$\{inboundCode\}#\$\{originalPackageCount\}-1`/)
|
||||
@@ -32,3 +37,37 @@ test('measurement fixture derives pallet resources from confirmed image count',
|
||||
test('volume ceiling removes binary floating point noise before scaling', () => {
|
||||
assert.match(source, /Number\.EPSILON \* Math\.max\(1, Math\.abs\(value\)\) \* 4/)
|
||||
})
|
||||
|
||||
test('demo package freezes repeated label printing and Mojia dimension replacement', () => {
|
||||
assert.match(labelTests, /repeatedAndPartialPrintsReadFrozenMappingWithoutReallocation/)
|
||||
assert.match(labelTests, /changedCargoKeepsTheFirstFrozenBoxCodes/)
|
||||
assert.match(cartonTests, /repeatedScanReplacesDeviceValuesButPreservesManualCountAndOldImageIsDeleted/)
|
||||
assert.match(source, /增量 fixture 形成动态真实独立货物测量明细/)
|
||||
})
|
||||
|
||||
test('demo package covers OCR failure, manual confirmation, aggregation and stale versions', () => {
|
||||
assert.match(source, /OCR无有效重量时转人工确认/)
|
||||
assert.match(source, /称重旧版本确认被拒绝且不覆盖已确认结果/)
|
||||
assert.match(source, /图片张数决定托数且净重汇总已落地/)
|
||||
assert.match(measurementTests, /ocrFailureCreatesManualWeightThatCanBeAdjustedAndConfirmed/)
|
||||
assert.match(measurementTests, /confirmingFifthPalletSeparatelyAggregatesGrossAndCargoNetWeight/)
|
||||
assert.match(measurementTests, /confirmingWithStaleVersionDoesNotTreatRequestAsIdempotent/)
|
||||
})
|
||||
|
||||
test('demo package keeps pallet pages bounded and historical snapshots read-only', () => {
|
||||
assert.match(source, /weight-pallet-options[^\n]+page=1&size=20&keyword=/)
|
||||
assert.match(source, /records\.length <= 20/)
|
||||
assert.match(measurementTests, /detailUsesStoredPalletSnapshotAfterCandidateBecomesUnavailable/)
|
||||
})
|
||||
|
||||
test('approval freezes measurement and requires quantity weight and volume conservation', () => {
|
||||
assert.match(source, /审核进入WAIT_SPLIT后箱码尺寸与图片快照不可再覆盖/)
|
||||
assert.match(measurementTests, /approvedMeasurementCannotBeResubmittedOrMutateFrozenTotals/)
|
||||
assert.match(reviewTests, /shouldApproveMultipleCargoLinesOnlyWhenAllFrozenTotalsMatch/)
|
||||
assert.match(reviewTests, /shouldRejectApprovalWhenVolumeSnapshotDoesNotConserve/)
|
||||
assert.match(source, /actualPackageCount[^\n]+originalPackageCount/)
|
||||
assert.match(source, /actualGrossWeightKg[^\n]+weightEvidence\.grossWeightKg/)
|
||||
assert.match(source, /actualNetWeightKg[^\n]+weightEvidence\.netWeightKg/)
|
||||
assert.match(source, /actualVolumeCbm[^\n]+totalVolume/)
|
||||
assert.match(source, /volumeWeightKg[^\n]+volumeWeight/)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user