From 844522f6b79ca0db896048b36d9929fabf963ea6 Mon Sep 17 00:00:00 2001 From: Bernardo Loureiro Date: Wed, 13 May 2015 19:31:04 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20bug=20quanto=20o=20va?= =?UTF-8?q?lor=20para=20valida=C3=A7=C3=A3o=20era=20do=20tipo=20string?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scripts/angular-boleto.js | 2 +- app/scripts/angular-boleto.min.js | 2 +- bower.json | 2 +- karma.conf.js | 1 + test/boletoSpec.js | 10 ++++++++++ 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/scripts/angular-boleto.js b/app/scripts/angular-boleto.js index a556e64..9310f43 100644 --- a/app/scripts/angular-boleto.js +++ b/app/scripts/angular-boleto.js @@ -232,7 +232,7 @@ angular.module('angular.boleto', ['ui.mask']) if (typeof scope.validarValor !== 'undefined') { var valor = numeroBoleto.substr(37, 10); valor = parseFloat(valor.substr(0, 8) + '.' + valor.substr(valor.length-2)); - if (valor !== scope.validarValor) { + if (valor !== parseFloat(scope.validarValor)) { scope.form[scope.name].$setValidity('valorErrado', false); return false; } diff --git a/app/scripts/angular-boleto.min.js b/app/scripts/angular-boleto.min.js index b046f2a..47b28e3 100644 --- a/app/scripts/angular-boleto.min.js +++ b/app/scripts/angular-boleto.min.js @@ -1 +1 @@ -"use strict";angular.module("angular.boleto",["ui.mask"]).filter("boleto",["$filter",function(){return function(e){if("undefined"!=typeof e&&null!==e){var e=e.replace(/[^0-9-]/g,"");if(""===e)return"";var r=e.slice(0,5)+".";return r=r+e.slice(5,10)+" ",r=r+e.slice(10,15)+".",r=r+e.slice(15,21)+" ",r=r+e.slice(21,26)+".",r=r+e.slice(26,32)+" ",r=r+e.slice(32,33)+" ",r+=e.slice(33,47)}return""}}]).filter("utc",["$filter",function(e){return function(r,t){var a,n;return(angular.isNumber(r)||angular.isString(r))&&(a=new Date(r)),n=angular.isDate(a)?new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()):r,"undefined"!=typeof t&&t?e("date")(n,t):n}}]).directive("inputBoleto",["$filter",function(e){return{restrict:"E",replace:!0,require:"?ngModel",scope:{form:"=",name:"@",validarValor:"=",validarVencimento:"="},template:'',link:function(r,t,a){r.$watch(a.ngModel,function(e){n(e)});var n=function(e){var t;return i(),"undefined"!=typeof e&&0!=e.length?(t=e.replace(/[^0-9]/g,""),t.length<47?(r.form[r.name].$setValidity("tamanhoErrado",!1),!1):0===parseInt(t)||0===t.length?(r.form[r.name].$setValidity("zerado",!1),!1):47==t.length&&u(t)?!0:void 0):void 0},i=function(){r.form[r.name].$setValidity("tamanhoErrado",!0),r.form[r.name].$setValidity("zerado",!0),r.form[r.name].$setValidity("verificadorErrado",!0),r.form[r.name].$setValidity("bloco1Errado",!0),r.form[r.name].$setValidity("bloco2Errado",!0),r.form[r.name].$setValidity("bloco3Errado",!0),r.form[r.name].$setValidity("valorErrado",!0),r.form[r.name].$setValidity("vencimentoErrado",!0)},o=function(e){for(var r,t=0,a=2,n=e.length-1;n>=0;)r=e.substr(n,1)*a,r>=10&&(r=1+(r-10)),t+=r,a=2==a?1:2,n-=1;var i=10-t%10;return 10==i&&(i=0),i},l=function(t){var a=function(r,t){return t=angular.copy(t),"number"==typeof t&&(t=e("utc")(t)),t.setTime(t.getTime()+24*parseInt(r)*60*60*1e3)},n=function(e,r){return Math.ceil((r-e)/864e5)},i=e("utc")("1997-10-07T00:00:00Z"),o=e("utc")(r.validarVencimento),l=n(i,o);if(l>9999){console.log("Data dentro do limite normalizado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.",r.validarVencimento);var u=e("utc")(a(9e3,i));i=angular.copy(u)}return a(t,i)},u=function(t){var a=t.substr(0,9),n=t.substr(9,1),i=o(a);if(0===parseInt(a)||n!=i)return r.form[r.name].$setValidity("bloco1Errado",!1),!1;var u=t.substr(10,10),d=t.substr(20,1),s=o(u);if(0===parseInt(u)||d!=s)return r.form[r.name].$setValidity("bloco2Errado",!1),!1;var f=t.substr(21,10),c=t.substr(31,1),m=o(f);if(0===parseInt(f)||c!=m)return r.form[r.name].$setValidity("bloco3Errado",!1),!1;if("undefined"!=typeof r.validarVencimento&&""!==r.validarVencimento){var v=t.substr(33,4);if(1*v>=1e3){var y=l(v);if(y=e("utc")(y,"yyyy-MM-dd"),r.validarVencimento!==y)return r.form[r.name].$setValidity("vencimentoErrado",!1),!1}}if("undefined"!=typeof r.validarValor){var g=t.substr(37,10);if(g=parseFloat(g.substr(0,8)+"."+g.substr(g.length-2)),g!==r.validarValor)return r.form[r.name].$setValidity("valorErrado",!1),!1}return!0}}}}]); \ No newline at end of file +"use strict";angular.module("angular.boleto",["ui.mask"]).filter("boleto",["$filter",function(){return function(e){if("undefined"!=typeof e&&null!==e){var e=e.replace(/[^0-9-]/g,"");if(""===e)return"";var r=e.slice(0,5)+".";return r=r+e.slice(5,10)+" ",r=r+e.slice(10,15)+".",r=r+e.slice(15,21)+" ",r=r+e.slice(21,26)+".",r=r+e.slice(26,32)+" ",r=r+e.slice(32,33)+" ",r+=e.slice(33,47)}return""}}]).filter("utc",["$filter",function(e){return function(r,t){var a,n;return(angular.isNumber(r)||angular.isString(r))&&(a=new Date(r)),n=angular.isDate(a)?new Date(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds()):r,"undefined"!=typeof t&&t?e("date")(n,t):n}}]).directive("inputBoleto",["$filter",function(e){return{restrict:"E",replace:!0,require:"?ngModel",scope:{form:"=",name:"@",validarValor:"=",validarVencimento:"="},template:'',link:function(r,t,a){r.$watch(a.ngModel,function(e){n(e)});var n=function(e){var t;return i(),"undefined"!=typeof e&&0!=e.length?(t=e.replace(/[^0-9]/g,""),t.length<47?(r.form[r.name].$setValidity("tamanhoErrado",!1),!1):0===parseInt(t)||0===t.length?(r.form[r.name].$setValidity("zerado",!1),!1):47==t.length&&u(t)?!0:void 0):void 0},i=function(){r.form[r.name].$setValidity("tamanhoErrado",!0),r.form[r.name].$setValidity("zerado",!0),r.form[r.name].$setValidity("verificadorErrado",!0),r.form[r.name].$setValidity("bloco1Errado",!0),r.form[r.name].$setValidity("bloco2Errado",!0),r.form[r.name].$setValidity("bloco3Errado",!0),r.form[r.name].$setValidity("valorErrado",!0),r.form[r.name].$setValidity("vencimentoErrado",!0)},o=function(e){for(var r,t=0,a=2,n=e.length-1;n>=0;)r=e.substr(n,1)*a,r>=10&&(r=1+(r-10)),t+=r,a=2==a?1:2,n-=1;var i=10-t%10;return 10==i&&(i=0),i},l=function(t){var a=function(r,t){return t=angular.copy(t),"number"==typeof t&&(t=e("utc")(t)),t.setTime(t.getTime()+24*parseInt(r)*60*60*1e3)},n=function(e,r){return Math.ceil((r-e)/864e5)},i=e("utc")("1997-10-07T00:00:00Z"),o=e("utc")(r.validarVencimento),l=n(i,o);if(l>9999){console.log("Data dentro do limite normalizado no comunicado FEBRABAN de n° 082/2012 de 14/06/2012.",r.validarVencimento);var u=e("utc")(a(9e3,i));i=angular.copy(u)}return a(t,i)},u=function(t){var a=t.substr(0,9),n=t.substr(9,1),i=o(a);if(0===parseInt(a)||n!=i)return r.form[r.name].$setValidity("bloco1Errado",!1),!1;var u=t.substr(10,10),d=t.substr(20,1),s=o(u);if(0===parseInt(u)||d!=s)return r.form[r.name].$setValidity("bloco2Errado",!1),!1;var f=t.substr(21,10),c=t.substr(31,1),m=o(f);if(0===parseInt(f)||c!=m)return r.form[r.name].$setValidity("bloco3Errado",!1),!1;if("undefined"!=typeof r.validarVencimento&&""!==r.validarVencimento){var v=t.substr(33,4);if(1*v>=1e3){var y=l(v);if(y=e("utc")(y,"yyyy-MM-dd"),r.validarVencimento!==y)return r.form[r.name].$setValidity("vencimentoErrado",!1),!1}}if("undefined"!=typeof r.validarValor){var g=t.substr(37,10);if(g=parseFloat(g.substr(0,8)+"."+g.substr(g.length-2)),g!==parseFloat(r.validarValor))return r.form[r.name].$setValidity("valorErrado",!1),!1}return!0}}}}]); \ No newline at end of file diff --git a/bower.json b/bower.json index dc28812..0f85139 100755 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-boleto", - "version": "0.1.4", + "version": "0.1.5", "homepage": "https://github.com/bernardolm/angular-boleto", "authors": [ "Bernardo Loureiro (http://bernardoloureiro.com.br)" diff --git a/karma.conf.js b/karma.conf.js index e6e4244..9cbeca7 100755 --- a/karma.conf.js +++ b/karma.conf.js @@ -28,6 +28,7 @@ module.exports = function(config) { files: bowerDependencies.js.concat([ 'app/scripts/app.js', 'app/scripts/*.*', + '!app/**/*.min.js', 'test/*Spec.js' ]), diff --git a/test/boletoSpec.js b/test/boletoSpec.js index 2132e79..344751f 100644 --- a/test/boletoSpec.js +++ b/test/boletoSpec.js @@ -225,6 +225,16 @@ describe('Campo de boleto bancário', function () { expect($scope.form1.boleto.$error.vencimentoErrado).toBe(false); }); + it ('deverá estar válido com código de boleto com valor correto', function () { + $rootScope.valor = "1274567.89"; + $scope.form1.boleto.$setViewValue('21890010070014560208200371313180100000127456789'); + $scope.$digest(); + + expect($scope.form1.$valid).toBe(true); + expect($scope.form1.boleto.$valid).toBe(true); + expect($scope.form1.boleto.$error.valorErrado).toBe(false); + }); + /*** Testes para datas acima do limite da FEBRABAN it ('deverá estar válido com código de boleto com vencimento correto', function () { $rootScope.vencimento = '2052-07-09';