From 3a65822023119b71deab5e298c7ef2de204caa13 Mon Sep 17 00:00:00 2001 From: Jussi Kosunen Date: Thu, 15 Aug 2013 15:14:54 +0300 Subject: fix($parse): handle promises returned from parsed function calls When a parsed function call returns a promise, the evaluated value is the resolved value of the promise rather than the promise object. Closes #3503 --- test/ng/parseSpec.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'test/ng/parseSpec.js') diff --git a/test/ng/parseSpec.js b/test/ng/parseSpec.js index f9a80fb6..7673066b 100644 --- a/test/ng/parseSpec.js +++ b/test/ng/parseSpec.js @@ -846,6 +846,18 @@ describe('parser', function() { expect(scope.$eval('greeting')).toBe(undefined); }); + it('should evaluate a function call returning a promise and eventually get its return value', function() { + scope.greetingFn = function() { return promise; }; + expect(scope.$eval('greetingFn()')).toBe(undefined); + + scope.$digest(); + expect(scope.$eval('greetingFn()')).toBe(undefined); + + deferred.resolve('hello!'); + expect(scope.$eval('greetingFn()')).toBe(undefined); + scope.$digest(); + expect(scope.$eval('greetingFn()')).toBe('hello!'); + }); describe('assignment into promises', function() { // This behavior is analogous to assignments to non-promise values -- cgit v1.2.3