feat(M08-B): 补微信转账预检
This commit is contained in:
@@ -24,6 +24,34 @@ const actor = {
|
||||
traceId: 'cleaning-payout-test'
|
||||
};
|
||||
|
||||
{
|
||||
const harness = createHarness({});
|
||||
const result = await harness.service.preflightWechatTransfer({
|
||||
...actor,
|
||||
settlementId: '501'
|
||||
});
|
||||
assert.equal(result.ready, true);
|
||||
assert.equal(result.account.merchantIdMasked, '19***0109');
|
||||
assert.equal(result.credential.reportInfoCount, 1);
|
||||
assert.equal(result.cleaner.openidConfigured, true);
|
||||
assert.equal(result.checks.find((item) => item.key === 'transfer_scene_id').status, 'PASS');
|
||||
}
|
||||
|
||||
{
|
||||
const harness = createHarness({
|
||||
credentialPatch: { transferSceneId: '', transferSceneReportInfos: [] },
|
||||
openid: ''
|
||||
});
|
||||
const result = await harness.service.preflightWechatTransfer({
|
||||
...actor,
|
||||
settlementId: '501'
|
||||
});
|
||||
assert.equal(result.ready, false);
|
||||
assert.equal(result.checks.find((item) => item.key === 'transfer_scene_id').status, 'FAIL');
|
||||
assert.equal(result.checks.find((item) => item.key === 'transfer_scene_report_infos').status, 'WARN');
|
||||
assert.equal(result.checks.find((item) => item.key === 'cleaner_openid').status, 'FAIL');
|
||||
}
|
||||
|
||||
{
|
||||
const harness = createHarness({ transferState: 'SUCCESS' });
|
||||
const result = await harness.service.executeWechatTransfer({
|
||||
@@ -176,7 +204,7 @@ function createHarness(options = {}) {
|
||||
return [[state.account], []];
|
||||
}
|
||||
if (sql.includes('FROM qipai_user_identities')) {
|
||||
return [[{ openid: 'openid-cleaner' }], []];
|
||||
return [options.openid === '' ? [] : [{ openid: options.openid ?? 'openid-cleaner' }], []];
|
||||
}
|
||||
throw new Error(`Unexpected SQL: ${sql}`);
|
||||
}
|
||||
@@ -235,6 +263,7 @@ function createHarness(options = {}) {
|
||||
transferSceneId: '1000',
|
||||
transferSceneReportInfos: [{ infoType: '岗位类型', infoContent: '保洁员' }]
|
||||
};
|
||||
Object.assign(credential, options.credentialPatch ?? {});
|
||||
return {
|
||||
state,
|
||||
repository,
|
||||
|
||||
@@ -152,6 +152,17 @@ const app = await buildApp({
|
||||
}
|
||||
},
|
||||
payoutService: {
|
||||
async preflightWechatTransfer(input) {
|
||||
calls.push(['preflightWechatTransfer', input]);
|
||||
return {
|
||||
ready: true,
|
||||
settlement: { id: input.settlementId, settlementNo: 'CLS-501', status: 'CONFIRMED' },
|
||||
account: { configured: true, merchantIdMasked: '19***0109' },
|
||||
credential: { configured: true, transferSceneId: '1000', reportInfoCount: 1 },
|
||||
cleaner: { openidConfigured: true },
|
||||
checks: [{ key: 'transfer_scene_id', status: 'PASS', message: 'ok' }]
|
||||
};
|
||||
},
|
||||
async executeWechatTransfer(input) {
|
||||
calls.push(['executeWechatTransfer', input]);
|
||||
return {
|
||||
@@ -419,6 +430,17 @@ assert.equal(calls.at(-1)[0], 'executeWechatTransfer');
|
||||
assert.equal(calls.at(-1)[1].settlementId, '501');
|
||||
assert.equal(calls.at(-1)[1].mode, 'API');
|
||||
|
||||
const wechatTransferPreflight = await app.inject({
|
||||
method: 'GET',
|
||||
url: '/admin-api/cleaning/settlements/501/wechat-transfer/preflight',
|
||||
headers: { authorization: `Bearer ${token}` }
|
||||
});
|
||||
assert.equal(wechatTransferPreflight.statusCode, 200);
|
||||
assert.equal(wechatTransferPreflight.json().data.ready, true);
|
||||
assert.equal(wechatTransferPreflight.json().data.account.merchantIdMasked, '19***0109');
|
||||
assert.equal(calls.at(-1)[0], 'preflightWechatTransfer');
|
||||
assert.equal(calls.at(-1)[1].settlementId, '501');
|
||||
|
||||
const syncedWechatTransfer = await app.inject({
|
||||
method: 'POST',
|
||||
url: '/admin-api/cleaning/settlements/501/wechat-transfer/sync',
|
||||
|
||||
Reference in New Issue
Block a user