aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Minar2012-01-09 10:36:51 -0800
committerVojta Jina2012-01-09 14:38:32 -0800
commit7146f7063602b82383211533d98e78f7eb2c03db (patch)
treed222b0dcd6f0a34fc51195b358da5f97190797ac
parent11cb9423a7a68ea65fee09241179fa04a5cb2eec (diff)
downloadangular.js-7146f7063602b82383211533d98e78f7eb2c03db.tar.bz2
fix($httpBackend): fix for jsonp requests
-rw-r--r--src/angular-mocks.js4
-rw-r--r--src/service/httpBackend.js3
-rw-r--r--test/angular-mocksSpec.js6
-rw-r--r--test/service/httpBackendSpec.js13
-rw-r--r--test/widgetsSpec.js1
5 files changed, 14 insertions, 13 deletions
diff --git a/src/angular-mocks.js b/src/angular-mocks.js
index 4b462a87..cc7f63a8 100644
--- a/src/angular-mocks.js
+++ b/src/angular-mocks.js
@@ -147,8 +147,8 @@ angular.module.ngMock.$Browser = function() {
};
self.$$scripts = [];
- self.addJs = function(url, domId, done) {
- var script = {url: url, id: domId, done: done};
+ self.addJs = function(url, done) {
+ var script = {url: url, done: done};
self.$$scripts.push(script);
return script;
};
diff --git a/src/service/httpBackend.js b/src/service/httpBackend.js
index 6da32600..f18808c6 100644
--- a/src/service/httpBackend.js
+++ b/src/service/httpBackend.js
@@ -38,7 +38,8 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, body, locati
callbacks[callbackId].data = data;
};
- var script = $browser.addJs(url.replace('JSON_CALLBACK', callbackId), null, function() {
+ var script = $browser.addJs(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId),
+ function() {
if (callbacks[callbackId].data) {
completeRequest(callback, 200, callbacks[callbackId].data);
} else {
diff --git a/test/angular-mocksSpec.js b/test/angular-mocksSpec.js
index 9c0bd681..054cabae 100644
--- a/test/angular-mocksSpec.js
+++ b/test/angular-mocksSpec.js
@@ -6,16 +6,14 @@ describe('mocks', function() {
describe('addJs', function() {
- it('should store url, id, done', inject(function($browser) {
+ it('should store url, done', inject(function($browser) {
var url = 'some.js',
- id = 'js-id',
done = noop;
- $browser.addJs(url, id, done);
+ $browser.addJs(url, done);
var script = $browser.$$scripts.shift();
expect(script.url).toBe(url);
- expect(script.id).toBe(id);
expect(script.done).toBe(done);
}));
diff --git a/test/service/httpBackendSpec.js b/test/service/httpBackendSpec.js
index 1c6d3a51..55d1a48a 100644
--- a/test/service/httpBackendSpec.js
+++ b/test/service/httpBackendSpec.js
@@ -19,7 +19,7 @@ describe('$httpBackend', function() {
beforeEach(inject(function($injector) {
- callbacks = {};
+ callbacks = {counter: 0};
$browser = $injector.get('$browser');
fakeBody = {removeChild: jasmine.createSpy('body.removeChild')};
$backend = createHttpBackend($browser, MockXhr, fakeTimeout, callbacks, fakeBody);
@@ -115,6 +115,9 @@ describe('$httpBackend', function() {
describe('JSONP', function() {
+ var SCRIPT_URL = /([^\?]*)\?cb=angular\.callbacks\.(.*)/;
+
+
it('should add script tag for JSONP request', function() {
callback.andCallFake(function(status, response) {
expect(status).toBe(200);
@@ -125,10 +128,10 @@ describe('$httpBackend', function() {
expect($browser.$$scripts.length).toBe(1);
var script = $browser.$$scripts.shift(),
- url = script.url.split('?cb=');
+ url = script.url.match(SCRIPT_URL);
- expect(url[0]).toBe('http://example.org/path');
- callbacks[url[1]]('some-data');
+ expect(url[1]).toBe('http://example.org/path');
+ callbacks[url[2]]('some-data');
script.done();
expect(callback).toHaveBeenCalledOnce();
@@ -140,7 +143,7 @@ describe('$httpBackend', function() {
expect($browser.$$scripts.length).toBe(1);
var script = $browser.$$scripts.shift(),
- callbackId = script.url.split('?cb=')[1];
+ callbackId = script.url.match(SCRIPT_URL)[2];
callbacks[callbackId]('some-data');
script.done();
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index 09d807b5..632724ce 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -244,7 +244,6 @@ describe('widget', function() {
$rootScope.tpl = template;
$rootScope.value = value;
});
- $browser.defer.flush();
};
}