From bf54db46bcf72bf74f9b2866523740b11637c0c1 Mon Sep 17 00:00:00 2001 From: Ben Lesh Date: Wed, 8 Jun 2016 13:14:27 -0400 Subject: [PATCH] fix(WebSocketSubject): WebSocketSubject will now chain operators properly (#1752) fixes #1745 --- spec/observables/dom/webSocket-spec.ts | 23 +++++++++++++++++++++++ src/observable/dom/WebSocketSubject.ts | 7 ------- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/spec/observables/dom/webSocket-spec.ts b/spec/observables/dom/webSocket-spec.ts index 15efd84afa..72ca69f53b 100644 --- a/spec/observables/dom/webSocket-spec.ts +++ b/spec/observables/dom/webSocket-spec.ts @@ -52,6 +52,29 @@ describe('Observable.webSocket', () => { subject.unsubscribe(); }); + it('should allow the user to chain operators', () => { + let messageReceived = false; + const subject = Observable.webSocket('ws://mysocket'); + + subject + .map(x => x + '?') + .map(x => x + '!') + .map(x => x + '!') + .subscribe((x: string) => { + expect(x).to.equal('pong?!!'); + messageReceived = true; + }); + + const socket = MockWebSocket.lastSocket; + + socket.open(); + + socket.triggerMessage(JSON.stringify('pong')); + expect(messageReceived).to.be.true; + + subject.unsubscribe(); + }); + it('receive multiple messages', () => { const expected = ['what', 'do', 'you', 'do', 'with', 'a', 'drunken', 'sailor?']; const results = []; diff --git a/src/observable/dom/WebSocketSubject.ts b/src/observable/dom/WebSocketSubject.ts index 8e85586faa..293b5b4681 100644 --- a/src/observable/dom/WebSocketSubject.ts +++ b/src/observable/dom/WebSocketSubject.ts @@ -1,7 +1,6 @@ import {Subject, AnonymousSubject} from '../../Subject'; import {Subscriber} from '../../Subscriber'; import {Observable} from '../../Observable'; -import {Operator} from '../../Operator'; import {Subscription} from '../../Subscription'; import {root} from '../../util/root'; import {ReplaySubject} from '../../ReplaySubject'; @@ -68,12 +67,6 @@ export class WebSocketSubject extends AnonymousSubject { this.destination = new ReplaySubject(); } - lift(operator: Operator) { - const sock: WebSocketSubject = new WebSocketSubject(this, this.destination); - sock.operator = operator; - return sock; - } - // TODO: factor this out to be a proper Operator/Subscriber implementation and eliminate closures multiplex(subMsg: () => any, unsubMsg: () => any, messageFilter: (value: T) => boolean) { const self = this;