diff options
| author | Lucas Galfasó | 2013-04-29 19:07:05 +0100 | 
|---|---|---|
| committer | Pete Bacon Darwin | 2013-04-29 19:12:19 +0100 | 
| commit | da8c320bdedff51db87c632e16c7d0b56fd6cd8b (patch) | |
| tree | b02840a5b325b17111649ec46a3a7fd045d27c8b /test | |
| parent | 06f2b2a8cf7e8216ad9ef05f73426271c2d97faa (diff) | |
| download | angular.js-da8c320bdedff51db87c632e16c7d0b56fd6cd8b.tar.bz2 | |
test(parse): Test for the parsing not invoking twice to get self
New tests to not call twice a function to get self
Diffstat (limited to 'test')
| -rw-r--r-- | test/ng/parseSpec.js | 106 | 
1 files changed, 106 insertions, 0 deletions
| diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index 020a1d6f..96b3d909 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -483,6 +483,112 @@ describe('parser', function() {        }); +      it('should call the function from the received instance and not from a new one', function() { +        var n = 0; +        scope.fn = function() { +          var c = n++; +          return { c: c, anotherFn: function() { return this.c == c; } }; +        }; +        expect(scope.$eval('fn().anotherFn()')).toBe(true); +      }); + + +      it('should call the function once when it is part of the context', function() { +        var count = 0; +        scope.fn = function() { +          count++; +          return { anotherFn: function() { return "lucas"; } }; +        }; +        expect(scope.$eval('fn().anotherFn()')).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is not part of the context', function() { +        var count = 0; +        scope.fn = function() { +          count++; +          return function() { return 'lucas'; }; +        }; +        expect(scope.$eval('fn()()')).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is not part of the context', function() { +        var count = 0; +        scope.fn = function() { +          count++; +          return function() { return 'lucas'; }; +        }; +        expect(scope.$eval('fn()()')).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is part of the context on assignments', function() { +        var count = 0; +        var element = {}; +        scope.fn = function() { +          count++; +          return element; +        }; +        expect(scope.$eval('fn().name = "lucas"')).toBe('lucas'); +        expect(element.name).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is part of the context on array lookups', function() { +        var count = 0; +        var element = []; +        scope.fn = function() { +          count++; +          return element; +        }; +        expect(scope.$eval('fn()[0] = "lucas"')).toBe('lucas'); +        expect(element[0]).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is part of the context on array lookup function', function() { +        var count = 0; +        var element = [{anotherFn: function() { return 'lucas';} }]; +        scope.fn = function() { +          count++; +          return element; +        }; +        expect(scope.$eval('fn()[0].anotherFn()')).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is part of the context on array lookup function', function() { +        var count = 0; +        var element = {name: {anotherFn: function() { return 'lucas';} } }; +        scope.fn = function() { +          count++; +          return element; +        }; +        expect(scope.$eval('fn().name.anotherFn()')).toBe('lucas'); +        expect(count).toBe(1); +      }); + + +      it('should call the function once when it is part of a sub-expression', function() { +        var count = 0; +        scope.element = [{}]; +        scope.fn = function() { +          count++; +          return 0; +        }; +        expect(scope.$eval('element[fn()].name = "lucas"')).toBe('lucas'); +        expect(scope.element[0].name).toBe('lucas'); +        expect(count).toBe(1); +      }); + +        describe('promises', function() {          var deferred, promise, q; | 
