diff options
author | Ben Langfeld <ben@langfeld.me> | 2015-02-06 12:24:15 +0300 |
---|---|---|
committer | Ben Langfeld <ben@langfeld.me> | 2015-02-06 12:24:15 +0300 |
commit | 77cbc7be3574de9676c2d52e1adf79608eb9d808 (patch) | |
tree | cb3b1a64d40f819dafeb40754191335e4aa7c718 /tests | |
parent | 3b027e88026c3c0c55fec8232b17b9886da97d95 (diff) |
Track room member status on the ChatUser model
Diffstat (limited to 'tests')
-rw-r--r-- | tests/candy/unit/core/chatUser.js | 11 | ||||
-rw-r--r-- | tests/candy/unit/core/event.js | 39 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tests/candy/unit/core/chatUser.js b/tests/candy/unit/core/chatUser.js index 7a4319a..3089bcc 100644 --- a/tests/candy/unit/core/chatUser.js +++ b/tests/candy/unit/core/chatUser.js @@ -162,5 +162,16 @@ define([ }); }); }); + + bdd.describe("status", function () { + bdd.it('is unavailable by default', function () { + expect(chatUser.getStatus()).to.equal('unavailable'); + }); + + bdd.it('can be set', function () { + chatUser.setStatus('busy'); + expect(chatUser.getStatus()).to.equal('busy'); + }); + }); }); }); diff --git a/tests/candy/unit/core/event.js b/tests/candy/unit/core/event.js index bdd48dd..859f80a 100644 --- a/tests/candy/unit/core/event.js +++ b/tests/candy/unit/core/event.js @@ -87,6 +87,7 @@ define([ expect(rosterEntry.getRole()).to.eql('moderator'); expect(rosterEntry.getAffiliation()).to.eql('admin'); expect(rosterEntry.getRealJid()).to.eql('doo@dah.com/somewhere'); + expect(rosterEntry.getStatus()).to.eql('available'); }); bdd.it('emits a candy:core.presence.room event', function () { @@ -105,6 +106,44 @@ define([ }); }); + bdd.describe('when a user updates their status in a room', function () { + bdd.beforeEach(receiveJoinPresence); + + var receiveUpdatePresence = function () { + var presence = $pres({ + from: participantJid + }) + .c('show').t('busy') + .up() + .c('x', {xmlns: 'http://jabber.org/protocol/muc#user'}) + .c('item', {affiliation: 'admin', role: 'moderator', jid: 'doo@dah.com/somewhere'}); + + testHelper.receiveStanza(presence); + }; + + bdd.it("updates the user's status in the room roster", function () { + receiveUpdatePresence(); + + var rosterEntry = room.getRoster().get(participantJid); + expect(rosterEntry.getStatus()).to.eql('busy'); + }); + + bdd.it('emits a candy:core.presence.room event', function () { + var eventParams; + $(Candy).on('candy:core.presence.room', function (ev, params) { eventParams = params; }); + + receiveUpdatePresence(); + + expect(eventParams).to.have.keys(['roomJid', 'roomName', 'user', 'action', 'currentUser', 'isNewRoom']); + expect(eventParams.roomJid).to.eql('coven@chat.shakespeare.lit'); + expect(eventParams.roomName).to.eql('coven'); + expect(eventParams.user).to.eql(room.getRoster().get(participantJid)); + expect(eventParams.action).to.eql('join'); + expect(eventParams.currentUser).to.eql(Candy.Core.getUser()); + expect(eventParams.isNewRoom).to.eql(false); + }); + }); + bdd.describe('when a user leaves a room', function () { bdd.beforeEach(receiveJoinPresence); |