import assert from 'node:assert/strict' import test from 'node:test' import { isDepositHandlingOverridden, normalizeConsignmentDepositHandling, normalizeWorkerDepositHandling, resolveConsignmentDepositAction, resolveWorkerDepositMode, } from './consignment-deposit-policy.js' test('押金处置选项归一:非法值一律退回按规则自动', () => { assert.equal(normalizeWorkerDepositHandling('refund'), 'refund') assert.equal(normalizeWorkerDepositHandling('forfeit'), 'forfeit') assert.equal(normalizeWorkerDepositHandling('auto'), 'auto') assert.equal(normalizeWorkerDepositHandling('随便写的'), 'auto') assert.equal(normalizeWorkerDepositHandling(undefined), 'auto') assert.equal(normalizeConsignmentDepositHandling('keep_frozen'), 'keep_frozen') assert.equal(normalizeConsignmentDepositHandling('forfeit'), 'forfeit') assert.equal(normalizeConsignmentDepositHandling(null), 'auto') }) test('打手履约押金:自动与退还都全额退还,只有显式扣除才没收', () => { assert.equal(resolveWorkerDepositMode('auto'), 'release') assert.equal(resolveWorkerDepositMode(undefined), 'release') assert.equal(resolveWorkerDepositMode('refund'), 'release') assert.equal(resolveWorkerDepositMode('forfeit'), 'forfeit') }) test('卖家发布押金:自动只看现货去向,加过好友也不再没收', () => { assert.equal(resolveConsignmentDepositAction('auto', { archive: true }), 'release') assert.equal(resolveConsignmentDepositAction('auto', { archive: false }), 'keep_frozen') }) test('卖家发布押金:显式选择覆盖自动规则', () => { assert.equal(resolveConsignmentDepositAction('keep_frozen', { archive: true }), 'keep_frozen') assert.equal(resolveConsignmentDepositAction('forfeit', { archive: false }), 'forfeit') assert.equal(resolveConsignmentDepositAction('forfeit', { archive: true }), 'forfeit') }) test('覆盖押金处置时视为需要留原因', () => { assert.equal(isDepositHandlingOverridden({}), false) assert.equal(isDepositHandlingOverridden({ workerDeposit: 'auto' }), false) assert.equal(isDepositHandlingOverridden({ workerDeposit: 'refund' }), true) assert.equal(isDepositHandlingOverridden({ consignmentDeposit: 'keep_frozen' }), true) })