aboutsummaryrefslogtreecommitdiffstats
path: root/test/FiltersSpec.js
blob: 4dd108ac169d98c89671324cbdfcd9b8b807bb32 (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
describe('filter', function(){

  var filter = angular.filter;

  describe('Currency', function(){
    it('should do basic filter', function(){
      var html = jqLite('<span/>');
      var context = {$element:html};
      var currency = bind(context, 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);
    });
  });

  describe('FilterThisIsContext', function(){
    it('should do basic filter', function(){
      expectAsserts(1);
      var scope = createScope();
      scope.name = 'misko';
      filter.testFn = function () {
        assertEquals('scope not equal', 'misko', this.name);
      };
      scope.$eval("0|testFn");
      delete angular.filter['testFn'];
    });
  });

  describe('NumberFormat', function(){
    it('should do basic filter', function(){
      var context = {jqElement:jqLite('<span/>')};
      var number = bind(context, 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));
    });
  });

  describe('Json', function () {
    it('should do basic filter', function(){
      assertEquals(toJson({a:"b"}, true), filter.json.call({$element:jqLite('<div></div>')}, {a:"b"}));
    });
  });

  describe('Lowercase', function() {
    it('should do basic filter', function(){
      assertEquals('abc', filter.lowercase('AbC'));
      assertEquals(null, filter.lowercase(null));
    });
  });

  describe('Uppercase', function() {
    it('should do basic filter', function(){
      assertEquals('ABC', filter.uppercase('AbC'));
      assertEquals(null, filter.uppercase(null));
    });
  });

  describe('Html', function() {
    it('should do basic filter', function(){
      var html = filter.html("a<b>c</b>d");
      expect(html instanceof HTML).toBeTruthy();
      expect(html.html).toEqual("a<b>c</b>d");
    });
  });

  describe('Linky', function() {
    it('should do basic filter', function(){
      var linky = 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; ' +
          '<a href="http://1.2/v:~-123">http://1.2/v:~-123</a>. c',
          linky("http://ab/ (http://a/) <http://a/> http://1.2/v:~-123. c").html);
      assertEquals(undefined, linky(undefined));
    });
  });

  describe('date', function(){

    var morning  = new TzDate(+5, '2010-09-03T12:05:08Z'); //7am
    var noon =     new TzDate(+5, '2010-09-03T17:05:08Z'); //12pm
    var midnight = new TzDate(+5, '2010-09-03T05:05:08Z'); //12am


    it('should ignore falsy inputs', function() {
      expect(filter.date(null)).toEqual(null);
      expect(filter.date('')).toEqual('');
    });

    it('should do basic filter', function() {
      expect(filter.date(noon)).toEqual(noon.toLocaleDateString());
      expect(filter.date(noon, '')).toEqual(noon.toLocaleDateString());
    });

    it('should accept number or number string representing milliseconds as input', function() {
      expect(filter.date(noon.getTime())).toEqual(noon.toLocaleDateString());
      expect(filter.date(noon.getTime() + "")).toEqual(noon.toLocaleDateString());
    });

    it('should accept format', function() {
      expect(filter.date(morning, "yy-MM-dd HH:mm:ss")).
                           toEqual('10-09-03 07:05:08');

      expect(filter.date(midnight, "yyyy-M-d h=H:m:saZ")).
                           toEqual('2010-9-3 12=0:5:8am0500');

      expect(filter.date(midnight, "yyyy-MM-dd hh=HH:mm:ssaZ")).
                           toEqual('2010-09-03 12=00:05:08am0500');

      expect(filter.date(noon, "yyyy-MM-dd hh=HH:mm:ssaZ")).
                       toEqual('2010-09-03 12=12:05:08pm0500');
    });
  });
});