Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/candy-chat/candy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorBen Langfeld <ben@langfeld.me>2015-02-06 12:24:15 +0300
committerBen Langfeld <ben@langfeld.me>2015-02-06 12:24:15 +0300
commit77cbc7be3574de9676c2d52e1adf79608eb9d808 (patch)
treecb3b1a64d40f819dafeb40754191335e4aa7c718 /tests
parent3b027e88026c3c0c55fec8232b17b9886da97d95 (diff)
Track room member status on the ChatUser model
Diffstat (limited to 'tests')
-rw-r--r--tests/candy/unit/core/chatUser.js11
-rw-r--r--tests/candy/unit/core/event.js39
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);