mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-09 15:24:43 +00:00
test(parse): Test for the parsing not invoking twice to get self
New tests to not call twice a function to get self
This commit is contained in:
parent
00845fca88
commit
4d8b0282b4
1 changed files with 106 additions and 0 deletions
|
|
@ -473,6 +473,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() {
|
describe('promises', function() {
|
||||||
var deferred, promise, q;
|
var deferred, promise, q;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue