Skip to content

Commit

Permalink
Recupero la cobertura del 100%
Browse files Browse the repository at this point in the history
  • Loading branch information
emilioplatzer committed Mar 13, 2022
1 parent 8fe6cbd commit e299baa
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 7 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Especialmente diseñado para encuestas
![extending](https://img.shields.io/badge/stability-extending-orange.svg)
[![npm-version](https://img.shields.io/npm/v/row-validator.svg)](https://npmjs.org/package/row-validator)
[![downloads](https://img.shields.io/npm/dm/row-validator.svg)](https://npmjs.org/package/row-validator)
[![build](https://github.com/codenautas/actions/workflows/node.js.yml/badge.svg)](https://github.com/codenautas/row-validator/actions/workflows/node.js.yml)
[![build](https://github.com/codenautas/row-validator/actions/workflows/node.js.yml/badge.svg)](https://github.com/codenautas/row-validator/actions/workflows/node.js.yml)
[![coverage](https://coveralls.io/repos/github/codenautas/row-validator/badge.svg)](https://coveralls.io/github/codenautas/row-validator)
[![outdated-deps](https://img.shields.io/github/issues-search/codenautas/row-validator?color=9cf&label=outdated-deps&query=is%3Apr%20author%3Aapp%2Fdependabot%20is%3Aopen)](https://github.com/codenautas/row-validator/pulls/app%2Fdependabot)

Expand Down
6 changes: 5 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@
],
"sourceMap": true,
"instrument": true,
"check-coverage": true
"check-coverage": true,
"statements":100,
"branches":100,
"functions":100,
"lines":100
},
"qa-control": {
"package-version": "0.3.0",
Expand Down
5 changes: 3 additions & 2 deletions src/lib/row-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ export function getRowValidator(_setup:Partial<RowValidatorSetup>){
siguientes:{},
actual:null, primeraFalla:null, resumen:'vacio'
};
if(opts && opts?.autoIngreso){
if(opts?.autoIngreso){
rta.autoIngresadas = {}
}
var respuestas=0;
Expand Down Expand Up @@ -172,6 +172,7 @@ export function getRowValidator(_setup:Partial<RowValidatorSetup>){
enSaltoAVariable=null; // si estaba en un salto acá se acaba
if(valor == null){
if(estructuraVar.tipo=='filtro'){
/* istanbul ignore if */
if(yaPasoLaActual){
feedback.estado='todavia_no';
}else{
Expand Down Expand Up @@ -258,8 +259,8 @@ export function getRowValidator(_setup:Partial<RowValidatorSetup>){
if (revisar_saltos_especiales){
}
}
/* istanbul ignore next */
if(feedback.estado==null){
/* istanbul ignore next */
throw new Error('No se pudo validar la variable '+miVariable);
}
if(apagada){
Expand Down
60 changes: 57 additions & 3 deletions src/test/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,21 @@ describe('row-validator', function(){
}
)
})
it("opcion invalida y omitida", async function(){
var row:SimpleRow = {v1:'A', v2:15, v3:null, v4:'t'}
var state = await rowValidator(simpleStruct, row);
discrepances.showAndThrow(
state,
{
resumen:'con problemas',
estados:{v1:'valida', v2:'invalida', v3:'omitida', v4:'fuera_de_flujo_por_omitida'},
siguientes:{v1:'v2', v2:'v3', v3:'v4', v4:null},
actual:'v3',
primeraVacia:'v3',
primeraFalla:'v2',
}
)
})
it("sobre máximo", async function(){
var row:SimpleRow = {v1:'A', v2:2, v3:99, v4:null}
var state = await rowValidator(simpleStruct, row);
Expand Down Expand Up @@ -500,14 +515,40 @@ describe('row-validator', function(){
v4:{estado:'actual' , siguiente:null, conDato:false, conProblema:false, pendiente:true ,apagada:false,inhabilitada:false,},
},
feedbackResumen:{estado:'fuera_de_flujo_por_salto', conDato:true, conProblema:true, pendiente:true},
estados:{v1:'valida', v2:'salteada', v3:'fuera_de_flujo_por_salto', v4:'actual'},
estados:{v1:'valida', v2:'salteada', v3:'fuera_de_flujo_por_salto', v4:'actual'},
siguientes:{v1:'v4', v2:NULL('v4'), v3:NULL('v4'), v4:null},
actual:'v4',
primeraVacia:'v4',
primeraFalla:'v3',
}
)
})
it("una salteada está marcada multiestado = true", async function(){
var rowValidator = getRowValidator({
getFuncionHabilitar,
multiEstado:true,
});
var row:SimpleRow = {v1:'A', v2:null, v3:1, v4:null}
var state = await rowValidator(simpleStruct, row);
discrepances.showAndThrow(
state,
{
resumen:'con problemas',
feedback:{
v1:{estado:'valida' , siguiente:'v4', conDato:true , conProblema:false, pendiente:false,apagada:false,inhabilitada:false,},
v2:{estado:'salteada' , siguiente:null, conDato:false, conProblema:false, pendiente:false,apagada:false,inhabilitada:true ,},
v3:{estado:'fuera_de_flujo_por_salto', siguiente:null, conDato:true , conProblema:true , pendiente:false,apagada:false,inhabilitada:true ,},
v4:{estado:'actual' , siguiente:null, conDato:false, conProblema:false, pendiente:true ,apagada:false,inhabilitada:false,},
},
feedbackResumen:{estado:'fuera_de_flujo_por_salto', conDato:true, conProblema:true, pendiente:true},
estados:{},
siguientes:{},
actual:'v4',
primeraVacia:'v4',
primeraFalla:'v3',
} as FormStructureState<keyof SimpleRow, true>
)
})
})
});
describe("saltos al final", async function(){
Expand Down Expand Up @@ -969,14 +1010,27 @@ describe('row-validator setup', async function(){
v1:{tipo:'texto', funcionHabilitar:'inexistente'},
}
}
it("calcula un registro vacío", async function(){
it("verifica la función habilitadora", async function(){
try{
await rowValidator(simpleRow, {v1:null});
throw new Error('debia fallar');
}catch(err){
discrepances.showAndThrow(err,new Error('rowValidator error. No existe la funcion habilitadora inexistente'));
}
})
it("verifica la función valoradora", async function(){
var simpleRow:Structure<string>={
variables:{
v1:{tipo:'texto', funcionAutoIngresar:'inexistente'},
}
}
try{
await rowValidator(simpleRow, {v1:null},{autoIngreso:true});
throw new Error('debia fallar');
}catch(err){
discrepances.showAndThrow(err,new Error('rowValidator error. No existe la funcion valoradora inexistente'));
}
})
it("tipo opciones sin opciones", async function(){
try{
await rowValidator({variables:{v1:{tipo:'opciones'}}}, {v1:1});
Expand All @@ -991,7 +1045,7 @@ describe('con filtros', function(){
let estructura:Structure<string> = {
variables:{
nombre: { tipo: 'texto' },
sexo: { tipo: 'opciones', opciones:{1:{}, 2:{}}},
sexo: { tipo: 'opciones', opciones:{1:{}, 2:{}/*, 3:{salto:'salario'}*/}},
edad: { tipo: 'numero' },
filtro1: { tipo: 'filtro' , funcionHabilitar:'sexo == 2 and edad >= 14', salto:'salario'},
hijos: { tipo: 'numero' },
Expand Down

0 comments on commit e299baa

Please sign in to comment.