aboutsummaryrefslogtreecommitdiffstats
path: root/test/FiltersTest.js
blob: ad38b94dc50b68e2bd67998f8776342522ec9a25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
FiltersTest = TestCase('FiltersTest');

FiltersTest.prototype.testCurrency = function(){
  var html = jqLite('<span/>');
  var context = {$element:html};
  var currency = bind(context, angular.filter.currency);

  assertEquals(currency(0), '$0.00');
  assertEquals(html.hasClass('ng-format-negative'), false);
  assertEquals(currency(-999), '$-999.00');
  assertEquals(html.hasClass('ng-format-negative'), true);
  assertEquals(currency(1234.5678), '$1,234.57');
  assertEquals(html.hasClass('ng-format-negative'), false);
};

FiltersTest.prototype.testFilterThisIsContext = function(){
  expectAsserts(1);
  var scope = createScope();
  scope.name = 'misko';
  angular.filter.testFn = function () {
    assertEquals('scope not equal', 'misko', this.name);
  };
  scope.$eval("0|testFn");
  delete angular.filter['testFn'];
};

FiltersTest.prototype.testNumberFormat = function(){
  var context = {jqElement:jqLite('<span/>')};
  var number = bind(context, angular.filter.number);

  assertEquals('0', number(0, 0));
  assertEquals('0.00', number(0));
  assertEquals('-999.00', number(-999));
  assertEquals('1,234.57', number(1234.5678));
  assertEquals('', number(Number.NaN));
  assertEquals('1,234.57', number("1234.5678"));
  assertEquals("", number(1/0));
};

FiltersTest.prototype.testJson = function () {
  assertEquals(toJson({a:"b"}, true), angular.filter.json.call({$element:jqLite('<div></div>')}, {a:"b"}));
};

FiltersTest.prototype.testPackageTracking = function () {
  var assert = function(title, trackingNo) {
    var val = angular.filter.trackPackage(trackingNo, title);
    assertNotNull("Did Not Match: " + trackingNo, val);
    assertEquals(title + ": " + trim(trackingNo), val.text());
    assertNotNull(val.attr('href'));
  };
  assert('UPS', ' 1Z 999 999 99 9999 999 9 ');
  assert('UPS', '1ZW5w5220379084747');

  assert('FedEx', '418822131061812');
  assert('FedEx', '9612019 5935 3267 2473 738');
  assert('FedEx', '9612019593532672473738');
  assert('FedEx', '235354667129449');
  assert('FedEx', '915368880571');
  assert('FedEx', '901712142390');
  assert('FedEx', '297391510063413');

  assert('USPS', '9101 8052 1390 7402 4335 49');
  assert('USPS', '9101010521297963339560');
  assert('USPS', '9102901001301038667029');
  assert('USPS', '910 27974 4490 3000 8916 56');
  assert('USPS', '9102801438635051633253');
};

FiltersTest.prototype.testLink = function() {
  var assert = function(text, url, obj){
    var val = angular.filter.link(obj);
    assertEquals('<a href="' + url + '">' + text + '</a>', sortedHtml(val));
  };
  assert("url", "url", "url");
  assert("hello", "url", {text:"hello", url:"url"});
  assert("a@b.com", "mailto:a@b.com", "a@b.com");
};

FiltersTest.prototype.testImage = function(){
  assertEquals(null, angular.filter.image());
  assertEquals(null, angular.filter.image({}));
  assertEquals(null, angular.filter.image(""));
  assertEquals('<img src="abc"></img>', sortedHtml(angular.filter.image({url:"abc"})));
  assertEquals(
      '<img src="abc" style="max-height: 10px; max-width: 10px;"></img>',
      sortedHtml(angular.filter.image({url:"abc"}, 10)));
  assertEquals(
      '<img src="abc" style="max-height: 20px; max-width: 10px;"></img>',
      sortedHtml(angular.filter.image({url:"abc"}, 10, 20)));
};

FiltersTest.prototype.testQRcode = function() {
  assertEquals(
      '<img src="http://chart.apis.google.com/chart?chl=Hello%20world&chs=200x200&cht=qr" style="height: 200px; width: 200px;"></img>',
      sortedHtml(angular.filter.qrcode('Hello world')));
  assertEquals(
      '<img src="http://chart.apis.google.com/chart?chl=http%3A%2F%2Fserver%3Fa%26b%3Dc&chs=100x100&cht=qr" style="height: 100px; width: 100px;"></img>',
      sortedHtml(angular.filter.qrcode('http://server?a&b=c', 100)));
};

FiltersTest.prototype.testLowercase = function() {
  assertEquals('abc', angular.filter.lowercase('AbC'));
  assertEquals(null, angular.filter.lowercase(null));
};

FiltersTest.prototype.testUppercase = function() {
  assertEquals('ABC', angular.filter.uppercase('AbC'));
  assertEquals(null, angular.filter.uppercase(null));
};

FiltersTest.prototype.testLineCount = function() {
  assertEquals(1, angular.filter.linecount(null));
  assertEquals(1, angular.filter.linecount(''));
  assertEquals(1, angular.filter.linecount('a'));
  assertEquals(2, angular.filter.linecount('a\nb'));
  assertEquals(3, angular.filter.linecount('a\nb\nc'));
};

FiltersTest.prototype.testIf = function() {
  assertEquals('A', angular.filter['if']('A', true));
  assertEquals(undefined, angular.filter['if']('A', false));
};

FiltersTest.prototype.testUnless = function() {
  assertEquals('A', angular.filter.unless('A', false));
  assertEquals(undefined, angular.filter.unless('A', true));
};

FiltersTest.prototype.testGoogleChartApiEncode = function() {
  assertEquals(
      '<img src="http://chart.apis.google.com/chart?chl=Hello world&chs=200x200&cht=qr" style="height: 200px; width: 200px;"></img>',
      sortedHtml(angular.filter.googleChartApi.encode({cht:"qr", chl:"Hello world"})));
};

FiltersTest.prototype.testHtml = function() {
  var div = jqLite('<div></div>');
  div.append(angular.filter.html("a<b>c</b>d"));
  assertEquals("a<b>c</b>d", div.html());
};

FiltersTest.prototype.testLinky = function() {
  var linky = angular.filter.linky;
  assertEquals(
      '<a href="http://ab">http://ab</a> ' +
      '(<a href="http://a">http://a</a>) ' +
      '&lt;<a href="http://a">http://a</a>&gt; \n ' +
      '<a href="http://1.2/v:~-123">http://1.2/v:~-123</a>. c',
      sortedHtml(linky("http://ab (http://a) <http://a> \n http://1.2/v:~-123. c")));
  assertEquals(undefined, linky(undefined));
};