This implementation only works in JavaScript, while the Observable transpilation story gets worked out. Right now, the service just makes a simple request, and returns an Observable of Response. Additional functionality will be captured in separate issues. Fixes #2028
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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);
 | |
|       });
 | |
|     });
 | |
|   });
 | |
| }
 |