mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-09 08:18:07 +00:00
- Introduced `normalizeEnvValue` function to improve handling of environment variable values, including trimming, unquoting, and stripping inline comments. - Updated `resolveSymbolFromEnv` and parsing functions to utilize the new normalization logic. - Added `validateAccountSnapshotForSymbol` function to validate account snapshots, ensuring numeric fields are correctly formatted and flagging any issues. - Implemented tests for environment variable parsing and account snapshot validation to ensure robustness and correctness.
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const ORIGINAL_ENV = { ...process.env };
|
|
|
|
beforeEach(() => {
|
|
process.env = { ...ORIGINAL_ENV };
|
|
});
|
|
|
|
afterEach(() => {
|
|
process.env = { ...ORIGINAL_ENV };
|
|
});
|
|
|
|
async function loadConfig() {
|
|
vi.resetModules();
|
|
return await import("../src/config");
|
|
}
|
|
|
|
describe("config env parsing", () => {
|
|
it("strips shell-style inline comments from symbol values", async () => {
|
|
process.env.EXCHANGE = "standx";
|
|
process.env.STANDX_SYMBOL = "BTC-USD # comment";
|
|
|
|
const { resolveSymbolFromEnv } = await loadConfig();
|
|
expect(resolveSymbolFromEnv()).toBe("BTC-USD");
|
|
});
|
|
|
|
it("parses numeric maker-points env values with inline comments", async () => {
|
|
process.env.EXCHANGE = "standx";
|
|
process.env.MAKER_POINTS_STOP_LOSS_USD = "1 # comment";
|
|
process.env.MAKER_POINTS_CLOSE_THRESHOLD = "2 ; comment";
|
|
|
|
const { makerPointsConfig } = await loadConfig();
|
|
expect(makerPointsConfig.stopLossUsd).toBe(1);
|
|
expect(makerPointsConfig.closeThreshold).toBe(2);
|
|
});
|
|
|
|
it("parses boolean maker-points env values with inline comments", async () => {
|
|
process.env.EXCHANGE = "standx";
|
|
process.env.MAKER_POINTS_BAND_10_30 = "false # comment";
|
|
|
|
const { makerPointsConfig } = await loadConfig();
|
|
expect(makerPointsConfig.enableBand10To30).toBe(false);
|
|
});
|
|
});
|
|
|