angular-cn/modules/angular2/test/http/backends/xhr_backend_spec.ts

79 lines
2.1 KiB
TypeScript
Raw Normal View History

import {
AsyncTestCompleter,
beforeEach,
ddescribe,
describe,
expect,
iit,
inject,
it,
xit,
SpyObject
} from 'angular2/test_lib';
import {BrowserXHR} from 'angular2/src/http/backends/browser_xhr';
import {XHRConnection, XHRBackend} from 'angular2/src/http/backends/xhr_backend';
import {bind, Injector} from 'angular2/di';
import {Request} from 'angular2/src/http/static_request';
var abortSpy;
var sendSpy;
var openSpy;
var addEventListenerSpy;
class MockBrowserXHR extends SpyObject {
abort: any;
send: any;
open: any;
addEventListener: any;
response: any;
responseText: string;
constructor() {
super();
this.abort = abortSpy = this.spy('abort');
this.send = sendSpy = this.spy('send');
this.open = openSpy = this.spy('open');
this.addEventListener = addEventListenerSpy = this.spy('addEventListener');
}
}
export function main() {
describe('XHRBackend', () => {
var backend;
var sampleRequest;
var constructSpy = new SpyObject();
beforeEach(() => {
var injector =
Injector.resolveAndCreate([bind(BrowserXHR).toValue(MockBrowserXHR), XHRBackend]);
backend = injector.get(XHRBackend);
sampleRequest = new Request('https://google.com');
});
it('should create a connection',
() => { expect(() => backend.createConnection(sampleRequest)).not.toThrow(); });
describe('XHRConnection', () => {
it('should call abort when disposed', () => {
var connection = new XHRConnection(sampleRequest, MockBrowserXHR);
connection.dispose();
expect(abortSpy).toHaveBeenCalled();
});
it('should automatically call open with method and url', () => {
new XHRConnection(sampleRequest, MockBrowserXHR);
expect(openSpy).toHaveBeenCalledWith('GET', sampleRequest.url);
});
it('should automatically call send on the backend with request body', () => {
var body = 'Some body to love';
var request = new Request('https://google.com', {body: body});
var connection = new XHRConnection(request, MockBrowserXHR);
expect(sendSpy).toHaveBeenCalledWith(body);
});
});
});
}