< Summary

Information
Class: FAU.Logica.Calculadores.CalculadorFactory
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/CalculadorFactory.cs
Line coverage
100%
Covered lines: 40
Uncovered lines: 0
Coverable lines: 40
Total lines: 52
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
Resolver(...)100%22100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/CalculadorFactory.cs

#LineLine coverage
 1namespace FAU.Logica.Calculadores;
 2
 3public class CalculadorFactory : ICalculadorFactory
 4{
 5    private readonly Dictionary<string, ICalculadorHaberes> _calculadores;
 6
 247    public CalculadorFactory(
 248        Sit10Calculator sit10,
 249        Sit30Calculator sit30,
 2410        Sit32Calculator sit32,
 2411        Sit50Calculator sit50,
 2412        Sit70Calculator sit70,
 2413        SitCadeteCalculator sitCadete,
 2414        AguinaldoCalculator aguinaldo)
 15    {
 2416        _calculadores = new Dictionary<string, ICalculadorHaberes>(StringComparer.OrdinalIgnoreCase)
 2417        {
 2418            // Nombres que coinciden con el campo `calculador` en la tabla `situaciones`
 2419            [nameof(Sit10Calculator)] = sit10,   // SIT01 — Personal Superior en actividad
 2420            [nameof(Sit30Calculator)] = sit30,   // SIT07 — Personal Subalterno en actividad
 2421            [nameof(Sit50Calculator)] = sit50,   // SIT16, SIT17 — Reincorporados
 2422
 2423            // TODO: la DB usa "CivilCalculator" (SIT19, SIT21) pero implementamos Sit70Calculator.
 2424            // Confirmar con FAU cuál es el nombre definitivo antes de conectar al pipeline.
 2425            [nameof(Sit70Calculator)] = sit70,
 2426
 2427            // TODO: la DB usa "Sit40Calculator" (SIT12, SIT13 — Cadetes) pero implementamos SitCadeteCalculator.
 2428            // Confirmar con FAU cuál es el nombre definitivo antes de conectar al pipeline.
 2429            [nameof(SitCadeteCalculator)] = sitCadete,
 2430
 2431            // TODO: Sit32Calculator no aparece en el seed de situaciones.
 2432            // Confirmar con FAU si existe alguna situación que use este calculador.
 2433            [nameof(Sit32Calculator)] = sit32,
 2434
 2435            // SIT14, SIT15, SIT18, SIT20 — Bajas del mes / aguinaldo
 2436            [nameof(AguinaldoCalculator)] = aguinaldo,
 2437
 2438            // TODO: los siguientes calculadores están en la DB pero aún no implementados:
 2439            //   "Sit20Calculator"    → SIT02 Personal Superior en disponibilidad
 2440            //   "ReservaCalculator"  → SIT05, SIT08 Reservistas
 2441            //   "SubsidioCalculator" → SIT22 Subsidio transitorio
 2442            // El factory retorna null para estos y el motor los registrará como Error.
 2443        };
 2444    }
 45
 46    public ICalculadorHaberes? Resolver(string? nombreCalculador)
 47    {
 2748        if (string.IsNullOrEmpty(nombreCalculador)) return null;
 2349        _calculadores.TryGetValue(nombreCalculador, out var calc);
 2350        return calc;
 51    }
 52}