From 6022f3df399a5d98830dfe7904f0ad2baaa308c7 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Thu, 3 Nov 2011 14:36:22 -0700 Subject: move(filters): appease the History God --- test/FiltersSpec.js | 300 ------------------------------------- test/service/filter/filtersSpec.js | 300 +++++++++++++++++++++++++++++++++++++ 2 files changed, 300 insertions(+), 300 deletions(-) delete mode 100644 test/FiltersSpec.js create mode 100644 test/service/filter/filtersSpec.js (limited to 'test') diff --git a/test/FiltersSpec.js b/test/FiltersSpec.js deleted file mode 100644 index 8c567441..00000000 --- a/test/FiltersSpec.js +++ /dev/null @@ -1,300 +0,0 @@ -'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/) http://1.2/v:~-123. c").html). - toEqual('http://ab/ ' + - '(http://a/) ' + - '<http://a/> ' + - 'http://1.2/v:~-123. c'); - expect(linky(undefined)).not.toBeDefined(); - }); - - it('should handle mailto:', function() { - expect(linky("mailto:me@example.com").html). - toEqual('me@example.com'); - expect(linky("me@example.com").html). - toEqual('me@example.com'); - expect(linky("send email to me@example.com, but").html). - toEqual('send email to me@example.com, but'); - }); - }); - - describe('date', function() { - - var morning = new angular.mock.TzDate(+5, '2010-09-03T12:05:08.000Z'); //7am - var noon = new angular.mock.TzDate(+5, '2010-09-03T17:05:08.000Z'); //12pm - var midnight = new angular.mock.TzDate(+5, '2010-09-03T05:05:08.000Z'); //12am - var earlyDate = new angular.mock.TzDate(+5, '0001-09-03T05:05:08.000Z'); - - var context, date; - - beforeEach(inject(function($rootScope) { - context = $rootScope; - date = bind(context, filter.date); - })); - - it('should ignore falsy inputs', function() { - expect(date(null)).toBeNull(); - expect(date('')).toEqual(''); - }); - - it('should do basic filter', function() { - expect(date(noon)).toEqual(date(noon, 'mediumDate')); - expect(date(noon, '')).toEqual(date(noon, 'mediumDate')); - }); - - it('should accept number or number string representing milliseconds as input', function() { - expect(date(noon.getTime())).toEqual(date(noon.getTime(), 'mediumDate')); - expect(date(noon.getTime() + "")).toEqual(date(noon.getTime() + "", 'mediumDate')); - }); - - it('should accept various format strings', function() { - expect(date(morning, "yy-MM-dd HH:mm:ss")). - toEqual('10-09-03 07:05:08'); - - expect(date(midnight, "yyyy-M-d h=H:m:saZ")). - toEqual('2010-9-3 12=0:5:8AM0500'); - - expect(date(midnight, "yyyy-MM-dd hh=HH:mm:ssaZ")). - toEqual('2010-09-03 12=00:05:08AM0500'); - - expect(date(noon, "yyyy-MM-dd hh=HH:mm:ssaZ")). - toEqual('2010-09-03 12=12:05:08PM0500'); - - expect(date(noon, "EEE, MMM d, yyyy")). - toEqual('Fri, Sep 3, 2010'); - - expect(date(noon, "EEEE, MMMM dd, yyyy")). - toEqual('Friday, September 03, 2010'); - - expect(date(earlyDate, "MMMM dd, y")). - toEqual('September 03, 1'); - }); - - it('should treat single quoted strings as string literals', function() { - expect(date(midnight, "yyyy'de' 'a'x'dd' 'adZ' h=H:m:saZ")). - toEqual('2010de axdd adZ 12=0:5:8AM0500'); - }); - - it('should treat a sequence of two single quotes as a literal single quote', function() { - expect(date(midnight, "yyyy'de' 'a''dd' 'adZ' h=H:m:saZ")). - toEqual("2010de a'dd adZ 12=0:5:8AM0500"); - }); - - it('should accept default formats', function() { - - expect(date(noon, "medium")). - toEqual('Sep 3, 2010 12:05:08 PM'); - - expect(date(noon, "short")). - toEqual('9/3/10 12:05 PM'); - - expect(date(noon, "fullDate")). - toEqual('Friday, September 3, 2010'); - - expect(date(noon, "longDate")). - toEqual('September 3, 2010'); - - expect(date(noon, "mediumDate")). - toEqual('Sep 3, 2010'); - - expect(date(noon, "shortDate")). - toEqual('9/3/10'); - - expect(date(noon, "mediumTime")). - toEqual('12:05:08 PM'); - - expect(date(noon, "shortTime")). - toEqual('12:05 PM'); - }); - - it('should be able to parse ISO 8601 dates/times using', function() { - var isoString = '2010-09-03T05:05:08.872Z'; - expect(date(isoString)). - toEqual(date(isoString, 'mediumDate')); - }); - - it('should parse format ending with non-replaced string', function() { - expect(date(morning, 'yy/xxx')).toEqual('10/xxx'); - }); - }); -}); diff --git a/test/service/filter/filtersSpec.js b/test/service/filter/filtersSpec.js new file mode 100644 index 00000000..8c567441 --- /dev/null +++ b/test/service/filter/filtersSpec.js @@ -0,0 +1,300 @@ +'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/) http://1.2/v:~-123. c").html). + toEqual('http://ab/ ' + + '(http://a/) ' + + '<http://a/> ' + + 'http://1.2/v:~-123. c'); + expect(linky(undefined)).not.toBeDefined(); + }); + + it('should handle mailto:', function() { + expect(linky("mailto:me@example.com").html). + toEqual('me@example.com'); + expect(linky("me@example.com").html). + toEqual('me@example.com'); + expect(linky("send email to me@example.com, but").html). + toEqual('send email to me@example.com, but'); + }); + }); + + describe('date', function() { + + var morning = new angular.mock.TzDate(+5, '2010-09-03T12:05:08.000Z'); //7am + var noon = new angular.mock.TzDate(+5, '2010-09-03T17:05:08.000Z'); //12pm + var midnight = new angular.mock.TzDate(+5, '2010-09-03T05:05:08.000Z'); //12am + var earlyDate = new angular.mock.TzDate(+5, '0001-09-03T05:05:08.000Z'); + + var context, date; + + beforeEach(inject(function($rootScope) { + context = $rootScope; + date = bind(context, filter.date); + })); + + it('should ignore falsy inputs', function() { + expect(date(null)).toBeNull(); + expect(date('')).toEqual(''); + }); + + it('should do basic filter', function() { + expect(date(noon)).toEqual(date(noon, 'mediumDate')); + expect(date(noon, '')).toEqual(date(noon, 'mediumDate')); + }); + + it('should accept number or number string representing milliseconds as input', function() { + expect(date(noon.getTime())).toEqual(date(noon.getTime(), 'mediumDate')); + expect(date(noon.getTime() + "")).toEqual(date(noon.getTime() + "", 'mediumDate')); + }); + + it('should accept various format strings', function() { + expect(date(morning, "yy-MM-dd HH:mm:ss")). + toEqual('10-09-03 07:05:08'); + + expect(date(midnight, "yyyy-M-d h=H:m:saZ")). + toEqual('2010-9-3 12=0:5:8AM0500'); + + expect(date(midnight, "yyyy-MM-dd hh=HH:mm:ssaZ")). + toEqual('2010-09-03 12=00:05:08AM0500'); + + expect(date(noon, "yyyy-MM-dd hh=HH:mm:ssaZ")). + toEqual('2010-09-03 12=12:05:08PM0500'); + + expect(date(noon, "EEE, MMM d, yyyy")). + toEqual('Fri, Sep 3, 2010'); + + expect(date(noon, "EEEE, MMMM dd, yyyy")). + toEqual('Friday, September 03, 2010'); + + expect(date(earlyDate, "MMMM dd, y")). + toEqual('September 03, 1'); + }); + + it('should treat single quoted strings as string literals', function() { + expect(date(midnight, "yyyy'de' 'a'x'dd' 'adZ' h=H:m:saZ")). + toEqual('2010de axdd adZ 12=0:5:8AM0500'); + }); + + it('should treat a sequence of two single quotes as a literal single quote', function() { + expect(date(midnight, "yyyy'de' 'a''dd' 'adZ' h=H:m:saZ")). + toEqual("2010de a'dd adZ 12=0:5:8AM0500"); + }); + + it('should accept default formats', function() { + + expect(date(noon, "medium")). + toEqual('Sep 3, 2010 12:05:08 PM'); + + expect(date(noon, "short")). + toEqual('9/3/10 12:05 PM'); + + expect(date(noon, "fullDate")). + toEqual('Friday, September 3, 2010'); + + expect(date(noon, "longDate")). + toEqual('September 3, 2010'); + + expect(date(noon, "mediumDate")). + toEqual('Sep 3, 2010'); + + expect(date(noon, "shortDate")). + toEqual('9/3/10'); + + expect(date(noon, "mediumTime")). + toEqual('12:05:08 PM'); + + expect(date(noon, "shortTime")). + toEqual('12:05 PM'); + }); + + it('should be able to parse ISO 8601 dates/times using', function() { + var isoString = '2010-09-03T05:05:08.872Z'; + expect(date(isoString)). + toEqual(date(isoString, 'mediumDate')); + }); + + it('should parse format ending with non-replaced string', function() { + expect(date(morning, 'yy/xxx')).toEqual('10/xxx'); + }); + }); +}); -- cgit v1.2.3