diff --git a/spec/observables/dom/ajax-spec.ts b/spec/observables/dom/ajax-spec.ts index 8ef9b8e668..854380f2bc 100644 --- a/spec/observables/dom/ajax-spec.ts +++ b/spec/observables/dom/ajax-spec.ts @@ -853,6 +853,21 @@ describe('Observable.ajax', () => { delete root.XMLHttpRequest.prototype.onerror; delete root.XMLHttpRequest.prototype.upload; }); + + describe('ajax.patch', () => { + it('should create an AjaxObservable with correct options', () => { + const body = { foo: 'bar' }; + const headers = { first: 'first' }; + // returns Observable, not AjaxObservable, so needs a cast + const { request } = Rx.Observable + .ajax.patch('/flibbertyJibbet', body, headers); + + expect(request.method).to.equal('PATCH'); + expect(request.url).to.equal('/flibbertyJibbet'); + expect(request.body).to.equal(body); + expect(request.headers).to.equal(headers); + }); + }); }); class MockXMLHttpRequest { diff --git a/src/observable/dom/AjaxObservable.ts b/src/observable/dom/AjaxObservable.ts index b5e2e0365b..a8178461a4 100644 --- a/src/observable/dom/AjaxObservable.ts +++ b/src/observable/dom/AjaxObservable.ts @@ -66,6 +66,7 @@ export interface AjaxCreationMethod { get(url: string, headers?: Object): Observable; post(url: string, body?: any, headers?: Object): Observable; put(url: string, body?: any, headers?: Object): Observable; + patch(url: string, body?: any, headers?: Object): Observable; delete(url: string, headers?: Object): Observable; getJSON(url: string, headers?: Object): Observable; } @@ -86,6 +87,10 @@ export function ajaxPut(url: string, body?: any, headers?: Object): Observable({ method: 'PUT', url, body, headers }); }; +export function ajaxPatch(url: string, body?: any, headers?: Object): Observable { + return new AjaxObservable({ method: 'PATCH', url, body, headers }); +}; + export function ajaxGetJSON(url: string, headers?: Object): Observable { return new AjaxObservable({ method: 'GET', url, responseType: 'json', headers }) .lift(new MapOperator((x: AjaxResponse, index: number): T => x.response, null)); @@ -132,6 +137,7 @@ export class AjaxObservable extends Observable { create.post = ajaxPost; create.delete = ajaxDelete; create.put = ajaxPut; + create.patch = ajaxPatch; create.getJSON = ajaxGetJSON; return create;