Files
Jyotisha/frontend/tests/consult-reports-billing.test.ts
T
jesse-uxandGrok (agent loop) cd7e0a3493
Independent Staging Quality Gate / validate (push) Successful in 13m51s
Independent Staging Quality Gate / publish (push) Successful in 4m6s
把普通对话的预留、取消、追加、寒暄结算和用量计算收进结算工厂。
完成回答、直达校正、输出审核和开流前加载仍留在路由里,使 diff 停在 1500 行以内。

Co-Authored-By: Grok (agent loop)
2026-10-15 19:12:44 +08:00

28 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/);
});