< 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: 37
Uncovered lines: 0
Coverable lines: 37
Total lines: 49
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
 107    public CalculadorFactory(
 108        Sit10Calculator sit10,
 109        Sit30Calculator sit30,
 1010        Sit32Calculator sit32,
 1011        Sit50Calculator sit50,
 1012        Sit70Calculator sit70,
 1013        SitCadeteCalculator sitCadete)
 14    {
 1015        _calculadores = new Dictionary<string, ICalculadorHaberes>(StringComparer.OrdinalIgnoreCase)
 1016        {
 1017            // Nombres que coinciden con el campo `calculador` en la tabla `situaciones`
 1018            [nameof(Sit10Calculator)] = sit10,   // SIT01 — Personal Superior en actividad
 1019            [nameof(Sit30Calculator)] = sit30,   // SIT07 — Personal Subalterno en actividad
 1020            [nameof(Sit50Calculator)] = sit50,   // SIT16, SIT17 — Reincorporados
 1021
 1022            // TODO: la DB usa "CivilCalculator" (SIT19, SIT21) pero implementamos Sit70Calculator.
 1023            // Confirmar con FAU cuál es el nombre definitivo antes de conectar al pipeline.
 1024            [nameof(Sit70Calculator)] = sit70,
 1025
 1026            // TODO: la DB usa "Sit40Calculator" (SIT12, SIT13 — Cadetes) pero implementamos SitCadeteCalculator.
 1027            // Confirmar con FAU cuál es el nombre definitivo antes de conectar al pipeline.
 1028            [nameof(SitCadeteCalculator)] = sitCadete,
 1029
 1030            // TODO: Sit32Calculator no aparece en el seed de situaciones.
 1031            // Confirmar con FAU si existe alguna situación que use este calculador.
 1032            [nameof(Sit32Calculator)] = sit32,
 1033
 1034            // TODO: los siguientes calculadores están en la DB pero aún no implementados:
 1035            //   "Sit20Calculator"    → SIT02 Personal Superior en disponibilidad
 1036            //   "ReservaCalculator"  → SIT05, SIT08 Reservistas
 1037            //   "AguinaldoCalculator"→ SIT14, SIT15, SIT18, SIT20 Bajas/aguinaldo
 1038            //   "SubsidioCalculator" → SIT22 Subsidio transitorio
 1039            // El factory retorna null para estos y el motor los registrará como Error.
 1040        };
 1041    }
 42
 43    public ICalculadorHaberes? Resolver(string? nombreCalculador)
 44    {
 1245        if (string.IsNullOrEmpty(nombreCalculador)) return null;
 846        _calculadores.TryGetValue(nombreCalculador, out var calc);
 847        return calc;
 48    }
 49}