Skip to content

Commit

Permalink
Merge pull request #2354 from herflis/my-fix-branch
Browse files Browse the repository at this point in the history
feat(AjaxObservable) : support 'PATCH' request type
  • Loading branch information
jayphelps authored Feb 14, 2017
2 parents 3f01114 + 1821519 commit 9c1f793
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
15 changes: 15 additions & 0 deletions spec/observables/dom/ajax-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 } = <any>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 {
Expand Down
6 changes: 6 additions & 0 deletions src/observable/dom/AjaxObservable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ export interface AjaxCreationMethod {
get(url: string, headers?: Object): Observable<AjaxResponse>;
post(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
put(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
patch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
delete(url: string, headers?: Object): Observable<AjaxResponse>;
getJSON<T>(url: string, headers?: Object): Observable<T>;
}
Expand All @@ -86,6 +87,10 @@ export function ajaxPut(url: string, body?: any, headers?: Object): Observable<A
return new AjaxObservable<AjaxResponse>({ method: 'PUT', url, body, headers });
};

export function ajaxPatch(url: string, body?: any, headers?: Object): Observable<AjaxResponse> {
return new AjaxObservable<AjaxResponse>({ method: 'PATCH', url, body, headers });
};

export function ajaxGetJSON<T>(url: string, headers?: Object): Observable<T> {
return new AjaxObservable<AjaxResponse>({ method: 'GET', url, responseType: 'json', headers })
.lift<T>(new MapOperator<AjaxResponse, T>((x: AjaxResponse, index: number): T => x.response, null));
Expand Down Expand Up @@ -132,6 +137,7 @@ export class AjaxObservable<T> extends Observable<T> {
create.post = ajaxPost;
create.delete = ajaxDelete;
create.put = ajaxPut;
create.patch = ajaxPatch;
create.getJSON = ajaxGetJSON;

return <AjaxCreationMethod>create;
Expand Down

0 comments on commit 9c1f793

Please sign in to comment.