'use strict'; describe('filter', function() { var filter = angular.filter; it('should called the filter when evaluating expression', inject(function($rootScope) { filter.fakeFilter = function() {}; spyOn(filter, 'fakeFilter'); $rootScope.$eval('10|fakeFilter'); expect(filter.fakeFilter).toHaveBeenCalledWith(10); delete filter['fakeFilter']; })); it('should call filter on scope context', inject(function($rootScope) { $rootScope.name = 'misko'; filter.fakeFilter = function() { expect(this.name).toEqual('misko'); }; spyOn(filter, 'fakeFilter').andCallThrough(); $rootScope.$eval('10|fakeFilter'); expect(filter.fakeFilter).toHaveBeenCalled(); delete filter['fakeFilter']; })); describe('formatNumber', function() { var pattern; beforeEach(function() { pattern = { minInt: 1, minFrac: 0, maxFrac: 3, posPre: '', posSuf: '', negPre: '-', negSuf: '', gSize: 3, lgSize: 3 }; }); it('should format according to different patterns', function() { pattern.gSize = 2; var num = formatNumber(1234567.89, pattern, ',', '.'); expect(num).toBe('12,34,567.89'); num = formatNumber(1234.56, pattern, ',', '.'); expect(num).toBe('1,234.56'); pattern.negPre = '('; pattern.negSuf = '-)'; num = formatNumber(-1234, pattern, ',', '.'); expect(num).toBe('(1,234-)'); pattern.posPre = '+'; pattern.posSuf = '+'; num = formatNumber(1234, pattern, ',', '.'); expect(num).toBe('+1,234+'); pattern.posPre = pattern.posSuf = ''; pattern.minFrac = 2; num = formatNumber(1, pattern, ',', '.'); expect(num).toBe('1.00'); pattern.maxFrac = 4; num = formatNumber(1.11119, pattern, ',', '.'); expect(num).toBe('1.1112'); }); it('should format according different seperators', function() { var num = formatNumber(1234567.1, pattern, '.', ',', 2); expect(num).toBe('1.234.567,10'); }); it('should format with or without fractionSize', function() { var num = formatNumber(123.1, pattern, ',', '.', 3); expect(num).toBe('123.100'); num = formatNumber(123.12, pattern, ',', '.'); expect(num).toBe('123.12'); var num = formatNumber(123.1116, pattern, ',', '.'); expect(num).toBe('123.112'); }); }); describe('currency', function() { var currency, html, context; beforeEach(inject(function($rootScope) { html = jqLite(''); context = $rootScope; context.$element = html; currency = bind(context, filter.currency); })); it('should do basic currency filtering', function() { expect(currency(0)).toEqual('$0.00'); expect(html.hasClass('ng-format-negative')).toBeFalsy(); expect(currency(-999)).toEqual('($999.00)'); expect(html.hasClass('ng-format-negative')).toBeTruthy(); expect(currency(1234.5678, "USD$")).toEqual('USD$1,234.57'); expect(html.hasClass('ng-format-negative')).toBeFalsy(); }); it('should return empty string for non-numbers', function() { expect(currency()).toBe(''); expect(html.hasClass('ng-format-negative')).toBeFalsy(); expect(currency('abc')).toBe(''); expect(html.hasClass('ng-format-negative')).toBeFalsy(); }); }); describe('number', function() { var context, number; beforeEach(inject(function($rootScope) { context = $rootScope; number = bind(context, filter.number); })); it('should do basic filter', function() { expect(number(0, 0)).toEqual('0'); expect(number(-999)).toEqual('-999'); expect(number(123)).toEqual('123'); expect(number(1234567)).toEqual('1,234,567'); expect(number(1234)).toEqual('1,234'); expect(number(1234.5678)).toEqual('1,234.568'); expect(number(Number.NaN)).toEqual(''); expect(number("1234.5678")).toEqual('1,234.568'); expect(number(1/0)).toEqual(""); expect(number(1, 2)).toEqual("1.00"); expect(number(.1, 2)).toEqual("0.10"); expect(number(.01, 2)).toEqual("0.01"); expect(number(.001, 3)).toEqual("0.001"); expect(number(.0001, 3)).toEqual("0.000"); expect(number(9, 2)).toEqual("9.00"); expect(number(.9, 2)).toEqual("0.90"); expect(number(.99, 2)).toEqual("0.99"); expect(number(.999, 3)).toEqual("0.999"); expect(number(.9999, 3)).toEqual("1.000"); expect(number(1234.567, 0)).toEqual("1,235"); expect(number(1234.567, 1)).toEqual("1,234.6"); expect(number(1234.567, 2)).toEqual("1,234.57"); }); it('should filter exponential numbers', function() { expect(number(1e50, 0)).toEqual('1e+50'); expect(number(-2e50, 2)).toEqual('-2e+50'); }); }); describe('json', function () { it('should do basic filter', function() { expect(filter.json.call({$element:jqLite('
')}, {a:"b"})).toEqual(toJson({a:"b"}, true)); }); }); describe('lowercase', function() { it('should do basic filter', function() { expect(filter.lowercase('AbC')).toEqual('abc'); expect(filter.lowercase(null)).toBeNull(); }); }); describe('uppercase', function() { it('should do basic filter', function() { expect(filter.uppercase('AbC')).toEqual('ABC'); expect(filter.uppercase(null)).toBeNull(); }); }); describe('html', function() { it('should do basic filter', function() { var html = filter.html("acd"); expect(html instanceof HTML).toBeTruthy(); expect(html.html).toEqual("acd"); }); }); describe('linky', function() { var linky = filter.linky; it('should do basic filter', function() { expect(linky("http://ab/ (http://a/)