From 414f223ecf26a3b5403f4ec6b7ed4e7637903586 Mon Sep 17 00:00:00 2001 From: Richard Schneider Date: Sun, 16 Oct 2016 14:08:15 +1300 Subject: [PATCH] feat('player'): emit 'message-processed' after a Table Manager message is processed --- README.md | 8 +++++++- lib/player.js | 6 ++++++ test/player.js | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d43553f..6f3b238 100644 --- a/README.md +++ b/README.md @@ -102,10 +102,16 @@ Emitted when the player needs to play a card from dummy. `player.playFromDummy( #### Event 'message' -* Table Manager messagee without the trailing CRLF +* Table Manager message without the trailing CRLF Emitted when a Table Manager message is received. +#### Event 'message-processed' + +* Table Manager message without the trailing CRLF + +Emitted after a Table Manager message is processed. + #### Event 'sent' * Table Manager message without the trailing CRLF diff --git a/lib/player.js b/lib/player.js index f1ad3bb..69c54ea 100644 --- a/lib/player.js +++ b/lib/player.js @@ -238,9 +238,15 @@ BridgePlayer.prototype.connect = function connect(table) { this.send(`${this.seat.name} ready for ${this.game.contract.leader()}'s card to trick 1`); } }) + + // Misc. + .on('endOfSession', () => this.state = 'done') + .on('data', m => self.emit('message-processed', m)) ; this.state = 'connecting'; this.send(`connecting "${this.teamName}" as ${this.seat.name} using protocol version 18`); + + return this; }; module.exports = BridgePlayer; diff --git a/test/player.js b/test/player.js index 993cfbe..81eb1e4 100644 --- a/test/player.js +++ b/test/player.js @@ -70,4 +70,21 @@ describe('Bridge Player', () => { .connect(table); }); + it('should emit "message-processed" event', done => { + let messageSeen = false, + table = new TestTable(); + let player = new Player() + .on('end', () => { + messageSeen.should.equal(true); + done(); + }) + .on('error', done) + .on('message-processed', () => { + player.state.should.equal('done'); + messageSeen = true; + }) + .connect(table); + }); + + });