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