diff --git a/src/global/money/money.js b/src/global/money/money.js index 55412d39..c052daf4 100644 --- a/src/global/money/money.js +++ b/src/global/money/money.js @@ -45,6 +45,7 @@ function MoneyMaskDirective($locale, $parse, PreFormatters) { var actualNumber = value.replace(/[^\d]+/g,''); actualNumber = actualNumber.replace(/^[0]+([1-9])/,'$1'); + actualNumber = actualNumber || '0'; var formatedValue = moneyMask.apply(actualNumber); if (angular.isDefined(attrs.uiNegativeNumber)) { diff --git a/src/global/money/money.spec.js b/src/global/money/money.spec.js index afebe950..4a5a44a1 100644 --- a/src/global/money/money.spec.js +++ b/src/global/money/money.spec.js @@ -97,5 +97,16 @@ describe('ui.utils.masks.money', function() { expect(input.getAttribute('value')).toEqual(currency + formatedNumberAsString); } }); + + it('should convert invalid values to zero', function() { + var currency = 'R$ '; + + var input = element(by.model('defaultMoney')); + + input.clear(); //Clear to send invalid content + input.sendKeys('a'); //Typing invalid content, bug #146 + + expect(input.getAttribute('value')).toEqual(currency + '0,00'); + }); }); }); diff --git a/src/global/money/money.test.js b/src/global/money/money.test.js index 7f5ab611..70b9080b 100644 --- a/src/global/money/money.test.js +++ b/src/global/money/money.test.js @@ -170,4 +170,14 @@ describe('ui-money-mask', function() { }); }); })); + + it('should convert invalid values to zero', function() { + var input = TestUtil.compile('', {}); + var model = input.controller('ngModel'); + + input.val('').triggerHandler('input'); + input.val('a').triggerHandler('input'); + expect(model.$viewValue).toBe('$ 0.00'); + expect(model.$modelValue).toBe(0); + }); });