完成回答、直达校正、输出审核和开流前加载仍留在路由里,使 diff 停在 1500 行以内。 Co-Authored-By: Grok (agent loop)
28 lines
2.0 KiB
TypeScript
28 lines
2.0 KiB
TypeScript
import assert from "node:assert/strict";
|
||
import { readFileSync } from "node:fs";
|
||
import test from "node:test";
|
||
|
||
const consultRoute = readFileSync(new URL("../src/app/api/consult/route.ts", import.meta.url), "utf8");
|
||
const consultSettlement = readFileSync(new URL("../src/lib/consult/settlement.ts", import.meta.url), "utf8");
|
||
const reportsRoute = readFileSync(new URL("../src/app/api/reports/route.ts", import.meta.url), "utf8");
|
||
const safeResponse = /error: "计费配置不可用",\s*message: "当前服务的计费配置尚未完成,请联系支持人员,本次不会扣点。",\s*code: "pricing_configuration_unavailable"/;
|
||
|
||
test("consult pricing failures log FeaturePricingError.code and return an actionable safe response", () => {
|
||
// 原值: route.ts 同时 import FeaturePricingError 与 resolveFeaturePricing
|
||
// 新值: route.ts 只 import FeaturePricingError;resolveFeaturePricing 在 settlement.ts
|
||
// 原因: 预留定价调用搬进结算工厂,失败分支仍留在 route
|
||
assert.match(consultRoute, /import \{ FeaturePricingError \} from "@\/lib\/feature-pricing"/);
|
||
assert.match(consultSettlement, /import \{ resolveFeaturePricing \} from "@\/lib\/feature-pricing"/);
|
||
assert.match(consultRoute, /error instanceof FeaturePricingError[\s\S]*reason=\$\{error\.code\}/);
|
||
assert.match(consultRoute, safeResponse);
|
||
assert.doesNotMatch(consultRoute, /pricing_configuration_unavailable[\s\S]{0,300}error\.message/);
|
||
});
|
||
|
||
test("reports pricing failures preserve the internal code while returning the same safe response", () => {
|
||
assert.match(reportsRoute, /import \{ FeaturePricingError, resolveFeaturePricing \} from "@\/lib\/feature-pricing"/);
|
||
assert.match(reportsRoute, /error instanceof FeaturePricingError[\s\S]*pricingConfigurationErrorCode = error\.code[\s\S]*reason=\$\{error\.code\}/);
|
||
assert.match(reportsRoute, /if \(pricingConfigurationErrorCode\)/);
|
||
assert.match(reportsRoute, safeResponse);
|
||
assert.doesNotMatch(reportsRoute, /pricing_configuration_unavailable[\s\S]{0,300}error\.message/);
|
||
});
|