diff --git a/spec/integ/matrix-client.spec.js b/spec/integ/matrix-client-event-emitter.spec.js similarity index 59% rename from spec/integ/matrix-client.spec.js rename to spec/integ/matrix-client-event-emitter.spec.js index f0c783b01..612a3d04e 100644 --- a/spec/integ/matrix-client.spec.js +++ b/spec/integ/matrix-client-event-emitter.spec.js @@ -3,12 +3,11 @@ var sdk = require("../.."); var HttpBackend = require("../mock-request"); var utils = require("../test-utils"); -describe("MatrixClient", function() { +describe("MatrixClient events", function() { var baseUrl = "http://localhost.or.something"; var client, httpBackend; var selfUserId = "@alice:localhost"; var selfAccessToken = "aseukfgwef"; - var otherUserId = "@bob:localhost"; beforeEach(function() { utils.beforeEach(this); @@ -25,45 +24,7 @@ describe("MatrixClient", function() { httpBackend.verifyNoOutstandingExpectation(); }); - describe("startClient", function() { - var initialSync = { - end: "s_5_3", - presence: [], - rooms: [] - }; - var eventData = { - start: "s_5_3", - end: "e_6_7", - chunk: [] - }; - - it("should start with /initialSync then move onto /events.", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").respond(200, eventData); - - client.startClient(); - - httpBackend.flush().done(function() { - done(); - }); - }); - - it("should pass the 'end' token from /initialSync to the from= param " + - " of /events", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").check(function(req) { - expect(req.queryParams.from).toEqual(initialSync.end); - }).respond(200, eventData); - - client.startClient(); - - httpBackend.flush().done(function() { - done(); - }); - }); - }); - - describe("EventEmitter", function() { + describe("emissions", function() { var initialSync = { end: "s_5_3", presence: [{ @@ -312,155 +273,4 @@ describe("MatrixClient", function() { }); }); - describe("room state", function() { - var roomOne = "!foo:localhost"; - var roomTwo = "!bar:localhost"; - var msgText = "some text here"; - var otherDisplayName = "Bob Smith"; - var initialSync = { - end: "s_5_3", - presence: [], - rooms: [ - { - membership: "join", - room_id: roomOne, - messages: { - start: "f_1_1", - end: "f_2_2", - chunk: [ - utils.mkMessage({ - room: roomOne, user: otherUserId, msg: "hello" - }) - ] - }, - state: [ - utils.mkEvent({ - type: "m.room.name", room: roomOne, user: otherUserId, - content: { - name: "Old room name" - } - }), - utils.mkMembership({ - room: roomOne, mship: "join", user: otherUserId - }), - utils.mkMembership({ - room: roomOne, mship: "join", user: selfUserId - }), - utils.mkEvent({ - type: "m.room.create", room: roomOne, user: selfUserId, - content: { - creator: selfUserId - } - }) - ] - }, - { - membership: "join", - room_id: roomTwo, - messages: { - start: "f_1_1", - end: "f_2_2", - chunk: [ - utils.mkMessage({ - room: roomTwo, user: otherUserId, msg: "hiii" - }) - ] - }, - state: [ - utils.mkMembership({ - room: roomTwo, mship: "join", user: otherUserId, - name: otherDisplayName - }), - utils.mkMembership({ - room: roomTwo, mship: "join", user: selfUserId - }), - utils.mkEvent({ - type: "m.room.create", room: roomTwo, user: selfUserId, - content: { - creator: selfUserId - } - }) - ] - } - ] - }; - var eventData = { - start: "s_5_3", - end: "e_6_7", - chunk: [ - utils.mkEvent({ - type: "m.room.name", room: roomOne, user: selfUserId, - content: { name: "A new room name" } - }), - utils.mkMessage({ - room: roomTwo, user: otherUserId, msg: msgText - }), - utils.mkEvent({ - type: "m.typing", room: roomTwo, - content: { user_ids: [otherUserId] } - }) - ] - }; - - it("should continually recalculate the right room name.", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").respond(200, eventData); - - client.startClient(); - - httpBackend.flush().done(function() { - var room = client.getRoom(roomOne); - // should have clobbered the name to the one from /events - expect(room.name).toEqual(eventData.chunk[0].content.name); - done(); - }); - }); - - it("should store the right events in the timeline.", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").respond(200, eventData); - - client.startClient(); - - httpBackend.flush().done(function() { - var room = client.getRoom(roomTwo); - // should have added the message from /events - expect(room.timeline.length).toEqual(2); - expect(room.timeline[1].getContent().body).toEqual(msgText); - done(); - }); - }); - - it("should set the right room name.", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").respond(200, eventData); - - client.startClient(); - httpBackend.flush().done(function() { - var room = client.getRoom(roomTwo); - // should use the display name of the other person. - expect(room.name).toEqual(otherDisplayName); - done(); - }); - }); - - it("should set the right user's typing flag.", function(done) { - httpBackend.when("GET", "/initialSync").respond(200, initialSync); - httpBackend.when("GET", "/events").respond(200, eventData); - - client.startClient(); - - httpBackend.flush().done(function() { - var room = client.getRoom(roomTwo); - var member = room.getMember(otherUserId); - expect(member).toBeDefined(); - expect(member.typing).toEqual(true); - member = room.getMember(selfUserId); - expect(member).toBeDefined(); - expect(member.typing).toEqual(false); - done(); - }); - }); - }); - }); diff --git a/spec/integ/matrix-client-syncing.spec.js b/spec/integ/matrix-client-syncing.spec.js new file mode 100644 index 000000000..ce5909aec --- /dev/null +++ b/spec/integ/matrix-client-syncing.spec.js @@ -0,0 +1,217 @@ +"use strict"; +var sdk = require("../.."); +var HttpBackend = require("../mock-request"); +var utils = require("../test-utils"); + +describe("MatrixClient syncing", function() { + var baseUrl = "http://localhost.or.something"; + var client, httpBackend; + var selfUserId = "@alice:localhost"; + var selfAccessToken = "aseukfgwef"; + var otherUserId = "@bob:localhost"; + + beforeEach(function() { + utils.beforeEach(this); + httpBackend = new HttpBackend(); + sdk.request(httpBackend.requestFn); + client = sdk.createClient({ + baseUrl: baseUrl, + userId: selfUserId, + accessToken: selfAccessToken + }); + }); + + afterEach(function() { + httpBackend.verifyNoOutstandingExpectation(); + }); + + describe("startClient", function() { + var initialSync = { + end: "s_5_3", + presence: [], + rooms: [] + }; + var eventData = { + start: "s_5_3", + end: "e_6_7", + chunk: [] + }; + + it("should start with /initialSync then move onto /events.", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").respond(200, eventData); + + client.startClient(); + + httpBackend.flush().done(function() { + done(); + }); + }); + + it("should pass the 'end' token from /initialSync to the from= param " + + " of /events", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").check(function(req) { + expect(req.queryParams.from).toEqual(initialSync.end); + }).respond(200, eventData); + + client.startClient(); + + httpBackend.flush().done(function() { + done(); + }); + }); + }); + + describe("room state", function() { + var roomOne = "!foo:localhost"; + var roomTwo = "!bar:localhost"; + var msgText = "some text here"; + var otherDisplayName = "Bob Smith"; + var initialSync = { + end: "s_5_3", + presence: [], + rooms: [ + { + membership: "join", + room_id: roomOne, + messages: { + start: "f_1_1", + end: "f_2_2", + chunk: [ + utils.mkMessage({ + room: roomOne, user: otherUserId, msg: "hello" + }) + ] + }, + state: [ + utils.mkEvent({ + type: "m.room.name", room: roomOne, user: otherUserId, + content: { + name: "Old room name" + } + }), + utils.mkMembership({ + room: roomOne, mship: "join", user: otherUserId + }), + utils.mkMembership({ + room: roomOne, mship: "join", user: selfUserId + }), + utils.mkEvent({ + type: "m.room.create", room: roomOne, user: selfUserId, + content: { + creator: selfUserId + } + }) + ] + }, + { + membership: "join", + room_id: roomTwo, + messages: { + start: "f_1_1", + end: "f_2_2", + chunk: [ + utils.mkMessage({ + room: roomTwo, user: otherUserId, msg: "hiii" + }) + ] + }, + state: [ + utils.mkMembership({ + room: roomTwo, mship: "join", user: otherUserId, + name: otherDisplayName + }), + utils.mkMembership({ + room: roomTwo, mship: "join", user: selfUserId + }), + utils.mkEvent({ + type: "m.room.create", room: roomTwo, user: selfUserId, + content: { + creator: selfUserId + } + }) + ] + } + ] + }; + var eventData = { + start: "s_5_3", + end: "e_6_7", + chunk: [ + utils.mkEvent({ + type: "m.room.name", room: roomOne, user: selfUserId, + content: { name: "A new room name" } + }), + utils.mkMessage({ + room: roomTwo, user: otherUserId, msg: msgText + }), + utils.mkEvent({ + type: "m.typing", room: roomTwo, + content: { user_ids: [otherUserId] } + }) + ] + }; + + it("should continually recalculate the right room name.", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").respond(200, eventData); + + client.startClient(); + + httpBackend.flush().done(function() { + var room = client.getRoom(roomOne); + // should have clobbered the name to the one from /events + expect(room.name).toEqual(eventData.chunk[0].content.name); + done(); + }); + }); + + it("should store the right events in the timeline.", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").respond(200, eventData); + + client.startClient(); + + httpBackend.flush().done(function() { + var room = client.getRoom(roomTwo); + // should have added the message from /events + expect(room.timeline.length).toEqual(2); + expect(room.timeline[1].getContent().body).toEqual(msgText); + done(); + }); + }); + + it("should set the right room name.", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").respond(200, eventData); + + client.startClient(); + httpBackend.flush().done(function() { + var room = client.getRoom(roomTwo); + // should use the display name of the other person. + expect(room.name).toEqual(otherDisplayName); + done(); + }); + }); + + it("should set the right user's typing flag.", function(done) { + httpBackend.when("GET", "/initialSync").respond(200, initialSync); + httpBackend.when("GET", "/events").respond(200, eventData); + + client.startClient(); + + httpBackend.flush().done(function() { + var room = client.getRoom(roomTwo); + var member = room.getMember(otherUserId); + expect(member).toBeDefined(); + expect(member.typing).toEqual(true); + member = room.getMember(selfUserId); + expect(member).toBeDefined(); + expect(member.typing).toEqual(false); + done(); + }); + }); + }); + +}); diff --git a/spec/unit/room-member.spec.js b/spec/unit/room-member.spec.js index efa3b039f..30c094754 100644 --- a/spec/unit/room-member.spec.js +++ b/spec/unit/room-member.spec.js @@ -15,56 +15,59 @@ describe("RoomMember", function() { member = new RoomMember(roomId, userA); }); - it("setPowerLevelEvent should set 'powerLevel' and 'powerLevelNorm'.", - function() { - var event = utils.mkEvent({ - type: "m.room.power_levels", - room: roomId, - user: userA, - content: { - users_default: 20, - users: { - "@bertha:bar": 200, - "@invalid:user": 10 // shouldn't barf on this. - } - }, - event: true - }); - member.setPowerLevelEvent(event); - expect(member.powerLevel).toEqual(20); - expect(member.powerLevelNorm).toEqual(10); + describe("setPowerLevelEvent", function() { + it("should set 'powerLevel' and 'powerLevelNorm'.", function() { + var event = utils.mkEvent({ + type: "m.room.power_levels", + room: roomId, + user: userA, + content: { + users_default: 20, + users: { + "@bertha:bar": 200, + "@invalid:user": 10 // shouldn't barf on this. + } + }, + event: true + }); + member.setPowerLevelEvent(event); + expect(member.powerLevel).toEqual(20); + expect(member.powerLevelNorm).toEqual(10); - var memberB = new RoomMember(roomId, userB); - memberB.setPowerLevelEvent(event); - expect(memberB.powerLevel).toEqual(200); - expect(memberB.powerLevelNorm).toEqual(100); + var memberB = new RoomMember(roomId, userB); + memberB.setPowerLevelEvent(event); + expect(memberB.powerLevel).toEqual(200); + expect(memberB.powerLevelNorm).toEqual(100); + }); }); - it("setTypingEvent should set 'typing'", function() { - member.typing = false; - var memberB = new RoomMember(roomId, userB); - memberB.typing = true; - var memberC = new RoomMember(roomId, userC); - memberC.typing = true; + describe("setTypingEvent", function() { + it("should set 'typing'", function() { + member.typing = false; + var memberB = new RoomMember(roomId, userB); + memberB.typing = true; + var memberC = new RoomMember(roomId, userC); + memberC.typing = true; - var event = utils.mkEvent({ - type: "m.typing", - user: userA, - room: roomId, - content: { - user_ids: [ - userA, userC - ] - }, - event: true + var event = utils.mkEvent({ + type: "m.typing", + user: userA, + room: roomId, + content: { + user_ids: [ + userA, userC + ] + }, + event: true + }); + member.setTypingEvent(event); + memberB.setTypingEvent(event); + memberC.setTypingEvent(event); + + expect(member.typing).toEqual(true); + expect(memberB.typing).toEqual(false); + expect(memberC.typing).toEqual(true); }); - member.setTypingEvent(event); - memberB.setTypingEvent(event); - memberC.setTypingEvent(event); - - expect(member.typing).toEqual(true); - expect(memberB.typing).toEqual(false); - expect(memberC.typing).toEqual(true); }); });