UNPKG

jquery.rut

Version:

Plugin de jQuery para formateo y validación de RUTs.

292 lines 12.2 kB
<!doctype html> <html> <head> <meta charset="utf-8"> <title>jquery.rut.js test suite</title> <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.14.0.css"> </head> <body> <div id="qunit"></div> <div id="qunit-fixture"></div> <script src="lib/syn.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="jquery.rut.js"></script> <script src="http://code.jquery.com/qunit/qunit-1.14.0.js"></script> <script> var okOriginal = "145694841"; var okFormateado = "14.569.484-1"; var invalidOriginal = "14569484K"; var invalidFormateado = "14.569.484-K"; /** * Crear un objeto input * * @param {string} val Define el valor dentro del input * @return {object:input} Contiene un elemento input */ var textbox = function(val) { return $("<input>").attr({ id : 'test', type : 'text', placeholder : '14.569.484-1', value : val.toString() }); } /** * Crea múltiples objetos input sin definir el atributo id * * @param {stinng[]} val Contiene el valor del objecto * @return {object:input} Contiene el elemento input */ var textboxs = function(val) { var rt = []; for (var i = 0; i < val.length; i++) { rt.push($("<input>").attr({ type : 'text', placeholder : '14.569.484-1', value : val[i] })); }; return rt; } module("pre"); test( "plugin loading", function() { ok($, "Existe jquery" ); ok(Syn, "Existe Syn" ); ok($.isFunction($("#format-blur").rut), "Existe la función $('...').rut()" ); ok($.isFunction($.formatRut), "Existe la función jQuery.formatRut()" ); ok($.isFunction($.validateRut), "Existe la función jQuery.validateRut()" ); }); module("static"); test( "format", function() { equal(okFormateado, $.formatRut(okOriginal), "rut válido, formateado correctamente"); equal(okFormateado, $.formatRut(okFormateado), "rut válido y formateado, formateado correctamente"); equal(invalidFormateado, $.formatRut(invalidOriginal), "rut inválido, formateado correctamente"); equal(invalidFormateado, $.formatRut(invalidFormateado), "rut inválido y formateado, formateado correctamente"); }); asyncTest( "validate", function() { var calledOnInvalid = false; ok($.validateRut(okOriginal), "rut válido identificado como tal"); ok(!$.validateRut(invalidOriginal), "rut inválido identificado como tal"); $.validateRut(okOriginal, function(rut, dv) { equal(14569484, rut, "RUT dividido correctamente"); equal(1, dv, "DV dividido correctamente"); }); $.validateRut(invalidOriginal, function(rut, dv) { calledOnInvalid = true; }); equal(calledOnInvalid, false, "No se invocó el callback con un RUT inválido"); start(); }); module("blur"); test( "format-triggered-onValid", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox(okOriginal)); equal($("input", fxtr).val(), okOriginal, "El valor es el original"); $("input", fxtr).rut(); equal($("input", fxtr).val(), okOriginal, "El valor no se formatea automáticamente"); $("input", fxtr).triggerHandler("blur"); equal($("input", fxtr).val(), okFormateado, "El valor fue formateado en blur"); }); ///////////////////////////// // Para múltiples objectos // ///////////////////////////// test( "format-triggered-onValid-multiple", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textboxs([okOriginal,okOriginal])); for (var i = 0; i < 2; i++) { equal($($("input", fxtr)[i]).val(), okOriginal, "El valor "+i+" es el original"); }; $("input", fxtr).rut(); for (var i = 0; i < 2; i++) { equal($($("input", fxtr)[i]).val(), okOriginal, "El valor "+i+" no se formatea automáticamente"); } for (var i = 0; i < 2; i++) { $($("input", fxtr)[i]).triggerHandler("blur"); equal($($("input", fxtr)[i]).val(), okFormateado, "El valor "+i+" fue formateado en blur"); } }); test( "format-triggered-onInalid", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox(invalidOriginal)); equal($("input", fxtr).val(), invalidOriginal, "El valor es el original"); $("input", fxtr).rut(); equal($("input", fxtr).val(), invalidOriginal, "El valor no se formatea automáticamente"); $("input", fxtr).triggerHandler("blur"); equal($("input", fxtr).val(), invalidFormateado, "El valor fue formateado en blur"); }); ///////////////////////////// // Para múltiples objectos // ///////////////////////////// test( "format-triggered-onInalid-multiple", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textboxs([invalidOriginal,invalidOriginal])); for (var i = 0; i < 2; i++) { equal($($("input", fxtr)[i]).val(), invalidOriginal, "El valor "+i+" es el original"); }; $("input", fxtr).rut(); for (var i = 0; i < 2; i++) { equal($($("input", fxtr)[i]).val(), invalidOriginal, "El valor "+i+" no se formatea automáticamente"); } for (var i = 0; i < 2; i++) { $($("input", fxtr)[i]).triggerHandler("blur"); equal($($("input", fxtr)[i]).val(), invalidFormateado, "El valor "+i+" fue formateado en blur"); } }); asyncTest( "validate-triggered-onValid", 2, function() { var fxtr = $("#qunit-fixture"); var valid = false; var invalid = false; fxtr.append(textbox(okOriginal)); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function() { valid = true; }); $("input", fxtr).on("rutInvalido", function() { invalid = true; }); $("input", fxtr).triggerHandler("blur"); start(); ok(valid, "evento rutValido gatillado"); ok(invalid == false, "evento rutInvalido no fue gatillado"); }); ///////////////////////////// // Para múltiples objectos // ///////////////////////////// asyncTest( "validate-triggered-onValid-multiple", 2, function() { var fxtr = $("#qunit-fixture"); var valid = false; var invalid = false; fxtr.append(textboxs([okOriginal,okOriginal])); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function() { valid = true; }); $("input", fxtr).on("rutInvalido", function() { invalid = true; }); for (var i = 0; i < 2; i++) { $($("input", fxtr)[i]).triggerHandler("blur"); } start(); ok(valid, "evento rutValido gatillado en múltiples textbox"); ok(invalid == false, "evento rutInvalido no fue gatillado en múltiples textbox"); }); asyncTest( "validate-triggered-onInvalid", 2, function() { var fxtr = $("#qunit-fixture"); var valid = false; var invalid = false; fxtr.append(textbox(invalidOriginal)); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function() { valid = true; }); $("input", fxtr).on("rutInvalido", function() { invalid = true; }); $("input", fxtr).triggerHandler("blur"); start(); ok(valid == false, "evento rutValido no fue gatillado"); ok(invalid, "evento rutInvalido gatillado"); }); ///////////////////////////// // Para múltiples objectos // ///////////////////////////// asyncTest( "validate-triggered-onInvalid-multiple", 2, function() { var fxtr = $("#qunit-fixture"); var valid = false; var invalid = false; fxtr.append(textboxs([invalidOriginal,invalidOriginal])); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function() { valid = true; }); $("input", fxtr).on("rutInvalido", function() { invalid = true; }); for (var i = 0; i < 2; i++) { $($("input", fxtr)[i]).triggerHandler("blur"); }; start(); ok(valid == false, "evento rutValido no fue gatillado en múltiples textbox"); ok(invalid, "evento rutInvalido gatillado en múltiples textbox"); }); test( "validate-correct-args-onValid", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox(okOriginal)); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function(e, rut, dv) { ok(e, "El evento fue retornado"); equal(rut, 14569484, "El rut fue retornado"); equal(dv, "1", "El dv fue retornado"); }); $("input", fxtr).triggerHandler("blur"); }); ///////////////////////////// // Para múltiples objectos // ///////////////////////////// test( "validate-correct-args-onValid-multiple", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textboxs([okOriginal,okOriginal])); $("input", fxtr).rut(); $("input", fxtr).on("rutValido", function(e, rut, dv) { ok(e, "El evento fue retornado"); equal(rut, 14569484, "El rut fue retornado"); equal(dv, "1", "El dv fue retornado"); }); for (var i = 0; i < 2; i++) { $($("input", fxtr)[i]).triggerHandler("blur"); ok(true,"blur ok para objeto "+i); }; }); module("keyup"); asyncTest( "format-invalid", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox("")); var formatsIncluded = []; var formats = ["", "1", "1-4", "14-5", "145-6"]; $("input", fxtr).rut({formatOn: 'keyup'}).on("keydown", function(e){ formatsIncluded.push($(this).val()); ok(formats.indexOf($(this).val()) >= 0, "Tecla [" + (e.keyCode >= 48 && e.keyCode <= 57 ? e.keyCode-48 : e.keyCode) + "]; formato anterior ['" + $(this).val() + "'] (remaining " + formats + ")"); formats.splice(formats.indexOf($(this).val()), 1); if(formats.length == 0) { start(); equal(0, formats.length, "RUT formateado correctamente para: " + formatsIncluded); } }); Syn.type("14569", 'test'); }); asyncTest( "format-valid", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox("")); var formatsIncluded = []; var formats = ["", "1", "1-5", "15-7", "157-7"]; $("input", fxtr).rut({formatOn: 'keyup'}).on("keydown", function(e){ formatsIncluded.push($(this).val()); ok(formats.indexOf($(this).val()) >= 0, "Tecla [" + (e.keyCode >= 48 && e.keyCode <= 57 ? e.keyCode-48 : e.keyCode) + "]; formato anterior ['" + $(this).val() + "'] (remaining " + formats + ")"); formats.splice(formats.indexOf($(this).val()), 1); if(formats.length == 0) { start(); equal(0, formats.length, "RUT formateado correctamente para: " + formatsIncluded); } }); Syn.type("15776", 'test'); }); asyncTest("format-control-keys-ignored", function() { var fxtr = $("#qunit-fixture"); fxtr.append(textbox("")); var formatsIncluded = []; var formats = ["", "1", "1-5", "15-7", "157-a", "1.57a-6", "1.57a-6", "1.57a-6", "1.57-6"]; $("input", fxtr).rut({formatOn: 'keyup'}).on("keydown", function(e){ formatsIncluded.push($(this).val()); ok(formats.indexOf($(this).val()) >= 0, "Tecla [" + (e.keyCode >= 48 && e.keyCode <= 57 ? e.keyCode-48 : e.keyCode) + "]; formato anterior ['" + $(this).val() + "'] (remaining " + formats + ")"); formats.splice(formats.indexOf($(this).val()), 1); if(formats.length == 0) { start(); equal(0, formats.length, "RUT formateado correctamente para: " + formatsIncluded); } }); Syn.type("157a6[left][left][backspace]7", 'test'); }); </script> </body> </html>