i18n-ai-translate
Version:
AI-powered localization CLI, Node library, and GitHub Action. Translate i18next JSON, Gettext PO, Java .properties, and iOS .strings with ChatGPT, Claude, Gemini, or local Ollama models.
54 lines • 2.3 kB
JavaScript
;
// Focused coverage for processModelArgs — exercises the per-engine
// defaults and the --tokens-per-minute parser in isolation.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
process.env.OPENAI_API_KEY = "test";
process.env.ANTHROPIC_API_KEY = "test";
process.env.GEMINI_API_KEY = "test";
const engine_1 = __importDefault(require("../enums/engine"));
const cli_helpers_1 = require("../cli_helpers");
describe("processModelArgs tokensPerMinute", () => {
it("defaults to undefined (no cap) for every engine", () => {
// The TPM cap is opt-in: mistakenly throttling a paid-tier user
// is worse than relying on RPM + provider 429s for free-tier.
for (const engine of [
engine_1.default.ChatGPT,
engine_1.default.Claude,
engine_1.default.Gemini,
engine_1.default.Ollama,
]) {
const args = (0, cli_helpers_1.processModelArgs)({ engine });
expect(args.tokensPerMinute).toBeUndefined();
}
});
it("honors a user-supplied --tokens-per-minute value", () => {
const args = (0, cli_helpers_1.processModelArgs)({
engine: engine_1.default.ChatGPT,
tokensPerMinute: "50000",
});
expect(args.tokensPerMinute).toBe(50000);
});
it("treats --tokens-per-minute 0 as explicitly disabling the cap", () => {
const args = (0, cli_helpers_1.processModelArgs)({
engine: engine_1.default.ChatGPT,
tokensPerMinute: "0",
});
expect(args.tokensPerMinute).toBeUndefined();
});
it("rejects negative --tokens-per-minute values", () => {
expect(() => (0, cli_helpers_1.processModelArgs)({
engine: engine_1.default.ChatGPT,
tokensPerMinute: "-1",
})).toThrow(/non-negative/);
});
it("rejects non-numeric --tokens-per-minute values", () => {
expect(() => (0, cli_helpers_1.processModelArgs)({
engine: engine_1.default.ChatGPT,
tokensPerMinute: "lots",
})).toThrow(/non-negative/);
});
});
//# sourceMappingURL=cli_helpers.spec.js.map