{"version":3,"sources":["../src/testing.ts"],"names":[],"mappings":"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","file":"testing.cjs","sourcesContent":["/**\n * `@ar-agents/banking/testing` — fixtures + mock BCRA adapters for tests.\n *\n * What you get:\n *\n *   - **`MockBcraDeudaAdapter`** — drop-in for `BcraDeudaAdapter`. Seed CUIT\n *     → BcraDeudaResult mappings; `.calls` records every lookup.\n *\n *   - **`MockBcraVarsAdapter`** — drop-in for `BcraVarsAdapter`. Seed the\n *     variable catalog + per-variable time series.\n *\n *   - **Factories** for the result shapes: `mockBcraDeudaClean` (al día),\n *     `mockBcraDeudaRiesgo` (situation 2-6), `mockBcraDeudaUnavailable`,\n *     plus `mockBcraVariable`, `mockUsdOficialSeries`, `mockCerSeries`.\n *\n * The 4 algorithm-only banking tools (`validate_cbu`, `lookup_bank_by_code`,\n * `list_banks`, `list_psps`) don't need mocks — they're pure functions.\n */\n\nimport type { BcraDeudaAdapter } from \"./bcra\";\nimport type {\n  BcraVarsAdapter,\n  BcraVariable,\n  BcraVariableDatapoint,\n} from \"./bcra-vars\";\nimport type {\n  BcraDeudaResult,\n  BcraDeudaData,\n  BcraDebtEntity,\n  BcraSituation,\n} from \"./types\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// BcraDeuda factories\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst ymPeriod = () => {\n  const d = new Date();\n  return `${d.getFullYear()}${String(d.getMonth() + 1).padStart(2, \"0\")}`;\n};\n\n/** Clean record — taxpayer al día, situation 1, low debt. */\nexport function mockBcraDeudaClean(\n  overrides: { cuit?: string; name?: string; totalAmount?: number } = {},\n): BcraDeudaResult {\n  const cuit = (overrides.cuit ?? \"20123456789\").replace(/[^\\d]/g, \"\");\n  const total = overrides.totalAmount ?? 100_000;\n  const data: BcraDeudaData = {\n    name: overrides.name ?? \"Test Persona Clean\",\n    period: ymPeriod(),\n    worstSituation: 1,\n    totalAmount: total,\n    entities: [\n      {\n        entity: \"BANCO DE GALICIA Y BUENOS AIRES S.A.U.\",\n        situation: 1,\n        amount: total,\n        daysOverdue: 0,\n        refinanced: false,\n        inReview: false,\n        inLitigation: false,\n      } as BcraDebtEntity,\n    ],\n  };\n  return { cuit, available: true, error: null, data };\n}\n\n/** Risky record — situation N (default 3 — riesgo medio). */\nexport function mockBcraDeudaRiesgo(\n  args: {\n    cuit?: string;\n    name?: string;\n    situation?: BcraSituation;\n    daysOverdue?: number;\n    amount?: number;\n  } = {},\n): BcraDeudaResult {\n  const cuit = (args.cuit ?? \"20987654321\").replace(/[^\\d]/g, \"\");\n  const situation = args.situation ?? 3;\n  const amount = args.amount ?? 5_000_000;\n  const data: BcraDeudaData = {\n    name: args.name ?? \"Test Persona Risky\",\n    period: ymPeriod(),\n    worstSituation: situation,\n    totalAmount: amount,\n    entities: [\n      {\n        entity: \"BANCO DE LA NACION ARGENTINA\",\n        situation,\n        amount,\n        daysOverdue: args.daysOverdue ?? 120,\n        refinanced: false,\n        inReview: false,\n        inLitigation: false,\n      } as BcraDebtEntity,\n    ],\n  };\n  return { cuit, available: true, error: null, data };\n}\n\n/** No record / service down. */\nexport function mockBcraDeudaUnavailable(\n  cuit = \"20999999999\",\n  reason = \"El CUIT consultado no tiene antecedentes crediticios en el sistema financiero.\",\n): BcraDeudaResult {\n  return { cuit, available: false, error: reason, data: null };\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// MockBcraDeudaAdapter\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class MockBcraDeudaAdapter implements BcraDeudaAdapter {\n  private readonly store = new Map<string, BcraDeudaResult>();\n  /** Append-only log of every lookup call. */\n  readonly calls: string[] = [];\n\n  seed(cuit: string, result: BcraDeudaResult): this {\n    const normalized = cuit.replace(/[^\\d]/g, \"\");\n    this.store.set(normalized, { ...result, cuit: normalized });\n    return this;\n  }\n\n  seedMany(entries: Record<string, BcraDeudaResult>): this {\n    for (const [cuit, result] of Object.entries(entries)) {\n      this.seed(cuit, result);\n    }\n    return this;\n  }\n\n  reset(): this {\n    this.calls.length = 0;\n    return this;\n  }\n\n  clear(): this {\n    this.store.clear();\n    this.calls.length = 0;\n    return this;\n  }\n\n  async lookup(cuit: string): Promise<BcraDeudaResult> {\n    const normalized = cuit.replace(/[^\\d]/g, \"\");\n    this.calls.push(normalized);\n    const seeded = this.store.get(normalized);\n    if (seeded) return seeded;\n    return {\n      cuit: normalized,\n      available: false,\n      error: `MockBcraDeudaAdapter: no seeded result for CUIT ${normalized}.`,\n      data: null,\n    };\n  }\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// BcraVars factories\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** A single time-series datapoint. */\nexport function mockBcraDatapoint(date: string, value: number): BcraVariableDatapoint {\n  return { fecha: date, valor: value };\n}\n\n/** A flat \"USD oficial = N today\" series. */\nexport function mockUsdOficialSeries(value = 1000): BcraVariableDatapoint[] {\n  const today = new Date().toISOString().slice(0, 10);\n  return [mockBcraDatapoint(today, value)];\n}\n\n/** A 30-day CER series with monthly inflation rate `growth` (default 5%). */\nexport function mockCerSeries(start = 100, growth = 0.05, days = 30): BcraVariableDatapoint[] {\n  const out: BcraVariableDatapoint[] = [];\n  const base = new Date();\n  for (let i = days - 1; i >= 0; i--) {\n    const d = new Date(base.getTime() - i * 86_400_000);\n    const v = start * (1 + growth) ** ((days - 1 - i) / 30);\n    out.push(mockBcraDatapoint(d.toISOString().slice(0, 10), Number(v.toFixed(4))));\n  }\n  return out;\n}\n\nconst DEFAULT_VARIABLES: BcraVariable[] = [\n  { idVariable: 4, descripcion: \"Tipo de cambio oficial USD/ARS\", valor: 1000, fecha: new Date().toISOString().slice(0, 10) },\n  { idVariable: 30, descripcion: \"CER (Coeficiente de Estabilización de Referencia)\", valor: 200, fecha: new Date().toISOString().slice(0, 10) },\n  { idVariable: 31, descripcion: \"UVA (Unidad de Valor Adquisitivo)\", valor: 1700, fecha: new Date().toISOString().slice(0, 10) },\n  { idVariable: 1, descripcion: \"Reservas internacionales del BCRA\", valor: 26000, fecha: new Date().toISOString().slice(0, 10) },\n];\n\n// ─────────────────────────────────────────────────────────────────────────────\n// MockBcraVarsAdapter\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport class MockBcraVarsAdapter implements BcraVarsAdapter {\n  private variables: BcraVariable[] = [...DEFAULT_VARIABLES];\n  private series = new Map<number, BcraVariableDatapoint[]>();\n  readonly calls: Array<{ method: \"list\" | \"series\"; idVariable?: number }> = [];\n\n  setVariables(vs: BcraVariable[]): this {\n    this.variables = vs;\n    return this;\n  }\n\n  seedSeries(idVariable: number, points: BcraVariableDatapoint[]): this {\n    this.series.set(idVariable, points);\n    return this;\n  }\n\n  reset(): this {\n    this.calls.length = 0;\n    return this;\n  }\n\n  async listVariables(): Promise<BcraVariable[]> {\n    this.calls.push({ method: \"list\" });\n    return this.variables;\n  }\n\n  async getVariable(idVariable: number): Promise<BcraVariableDatapoint[]> {\n    this.calls.push({ method: \"series\", idVariable });\n    return this.series.get(idVariable) ?? [];\n  }\n}\n"]}