< Summary

Information
Class: FAU.Logica.Validadores.NumeroCuentaValidator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Validadores/NumeroCuentaValidator.cs
Line coverage
100%
Covered lines: 20
Uncovered lines: 0
Coverable lines: 20
Total lines: 66
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Validar(...)100%44100%
Normalizar(...)100%11100%
FormatearParaGuardar(...)100%22100%
ValidarBROU(...)100%22100%
ValidarGenerico(...)100%22100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Validadores/NumeroCuentaValidator.cs

#LineLine coverage
 1using System.Text.RegularExpressions;
 2
 3namespace FAU.Logica.Validadores;
 4
 5public static class NumeroCuentaValidator
 6{
 7    /// <summary>
 8    /// Valida el número de cuenta según el código de banco.
 9    /// Retorna null si es válido, mensaje de error si no.
 10    /// La validación se aplica sobre el número ya normalizado (sin guiones).
 11    /// </summary>
 12    public static string? Validar(string codigoBanco, string? numeroCuenta)
 13    {
 2014        if (string.IsNullOrWhiteSpace(numeroCuenta))
 315            return null; // campo opcional
 16
 1717        var normalizado = Normalizar(numeroCuenta);
 18
 1719        return codigoBanco.ToUpperInvariant() switch
 1720        {
 821            "BROU" => ValidarBROU(normalizado),
 1722            // TODO: agregar validación específica para cada banco al incorporarlo
 923            _ => ValidarGenerico(normalizado)
 1724        };
 25    }
 26
 27    /// <summary>
 28    /// Elimina guiones del número de cuenta (normalización interna).
 29    /// </summary>
 30    public static string Normalizar(string numeroCuenta) =>
 2631        numeroCuenta.Replace("-", "");
 32
 33    /// <summary>
 34    /// Formatea el número de cuenta para persistir según el banco:
 35    /// BROU → NNNNNNNNN-NNNNN (con guión), resto → solo dígitos.
 36    /// Llamar solo después de que Validar haya retornado null.
 37    /// </summary>
 38    public static string FormatearParaGuardar(string codigoBanco, string numeroCuenta)
 39    {
 640        var digits = Normalizar(numeroCuenta);
 641        return codigoBanco.ToUpperInvariant() == "BROU"
 642            ? $"{digits[..9]}-{digits[9..]}"
 643            : digits;
 44    }
 45
 46    // ── BROU ─────────────────────────────────────────────────────────────────
 47
 48    private static string? ValidarBROU(string normalizado)
 49    {
 850        if (!Regex.IsMatch(normalizado, @"^\d{14}$"))
 451            return "El número de cuenta BROU debe tener 14 dígitos (ej: 110534078-00001).";
 52
 453        return null;
 54    }
 55
 56    // ── Genérico ─────────────────────────────────────────────────────────────
 57
 58    private static string? ValidarGenerico(string normalizado)
 59    {
 60        // TODO: reemplazar por validación específica del banco cuando se incorpore
 961        if (!Regex.IsMatch(normalizado, @"^\d{4,20}$"))
 462            return "El número de cuenta debe tener entre 4 y 20 dígitos.";
 63
 564        return null;
 65    }
 66}