1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-08-05 00:42:10 +03:00

Finish timline integration tests.

This commit is contained in:
Kegan Dougal
2015-06-26 13:53:01 +01:00
parent 3c4bda8580
commit fd0eb0c674
2 changed files with 121 additions and 12 deletions

View File

@@ -107,7 +107,7 @@ Room.prototype.addEventsToTimeline = function(events, toStartOfTimeline) {
else { else {
this.timeline.push(events[i]); this.timeline.push(events[i]);
} }
this.emit("Room.timeline", events[i], this, toStartOfTimeline); this.emit("Room.timeline", events[i], this, Boolean(toStartOfTimeline));
} }
}; };

View File

@@ -8,6 +8,7 @@ describe("MatrixClient room timelines", function() {
var baseUrl = "http://localhost.or.something"; var baseUrl = "http://localhost.or.something";
var client, httpBackend; var client, httpBackend;
var userId = "@alice:localhost"; var userId = "@alice:localhost";
var userName = "Alice";
var accessToken = "aseukfgwef"; var accessToken = "aseukfgwef";
var roomId = "!foo:bar"; var roomId = "!foo:bar";
var otherUserId = "@bob:localhost"; var otherUserId = "@bob:localhost";
@@ -38,7 +39,7 @@ describe("MatrixClient room timelines", function() {
room: roomId, mship: "join", user: otherUserId, name: "Bob" room: roomId, mship: "join", user: otherUserId, name: "Bob"
}), }),
utils.mkMembership({ utils.mkMembership({
room: roomId, mship: "join", user: userId, name: "Alice" room: roomId, mship: "join", user: userId, name: userName
}), }),
utils.mkEvent({ utils.mkEvent({
type: "m.room.create", room: roomId, user: userId, type: "m.room.create", room: roomId, user: userId,
@@ -65,7 +66,9 @@ describe("MatrixClient room timelines", function() {
start: "start_" start: "start_"
}; };
httpBackend.when("GET", "/initialSync").respond(200, initialSync); httpBackend.when("GET", "/initialSync").respond(200, initialSync);
httpBackend.when("GET", "/events").respond(200, eventData); httpBackend.when("GET", "/events").respond(200, function() {
return eventData;
});
}); });
afterEach(function() { afterEach(function() {
@@ -88,7 +91,7 @@ describe("MatrixClient room timelines", function() {
// check member // check member
var member = room.timeline[1].sender; var member = room.timeline[1].sender;
expect(member.userId).toEqual(userId); expect(member.userId).toEqual(userId);
expect(member.name).toEqual("Alice"); expect(member.name).toEqual(userName);
httpBackend.flush("/events", 1).done(function() { httpBackend.flush("/events", 1).done(function() {
done(); done();
@@ -197,7 +200,7 @@ describe("MatrixClient room timelines", function() {
it("should set the right event.sender values", function(done) { it("should set the right event.sender values", function(done) {
// make an m.room.member event with prev_content // make an m.room.member event with prev_content
var oldMshipEvent = utils.mkMembership({ var oldMshipEvent = utils.mkMembership({
mship: "join", user: userId, room: roomId, name: "Alice", mship: "join", user: userId, room: roomId, name: userName,
url: "mxc://some/url" url: "mxc://some/url"
}); });
oldMshipEvent.prev_content = { oldMshipEvent.prev_content = {
@@ -226,7 +229,7 @@ describe("MatrixClient room timelines", function() {
var oldMsg = room.timeline[0]; var oldMsg = room.timeline[0];
expect(oldMsg.sender.name).toEqual("Old Alice"); expect(oldMsg.sender.name).toEqual("Old Alice");
var newMsg = room.timeline[2]; var newMsg = room.timeline[2];
expect(newMsg.sender.name).toEqual("Alice"); expect(newMsg.sender.name).toEqual(userName);
done(); done();
}); });
@@ -292,20 +295,126 @@ describe("MatrixClient room timelines", function() {
}); });
describe("new events", function() { describe("new events", function() {
xit("should be added to the right place in the timeline", function() { it("should be added to the right place in the timeline", function(done) {
eventData.chunk = [
utils.mkMessage({user: userId, room: roomId}),
utils.mkMessage({user: userId, room: roomId})
];
client.on("syncComplete", function() {
var room = client.getRoom(roomId);
var index = 0;
client.on("Room.timeline", function(event, rm, toStart) {
expect(toStart).toBe(false);
expect(rm).toEqual(room);
expect(event.event).toEqual(eventData.chunk[index]);
index += 1;
});
httpBackend.flush("/messages", 1);
httpBackend.flush("/events", 1).done(function() {
expect(index).toEqual(2);
expect(room.timeline[room.timeline.length - 1].event).toEqual(
eventData.chunk[1]
);
expect(room.timeline[room.timeline.length - 2].event).toEqual(
eventData.chunk[0]
);
done();
});
});
client.startClient();
httpBackend.flush("/initialSync", 1);
}); });
xit("should set the right event.sender values", function() { it("should set the right event.sender values", function(done) {
eventData.chunk = [
utils.mkMessage({user: userId, room: roomId}),
utils.mkMembership({
user: userId, room: roomId, mship: "join", name: "New Name"
}),
utils.mkMessage({user: userId, room: roomId})
];
client.on("syncComplete", function() {
var room = client.getRoom(roomId);
httpBackend.flush("/events", 1).done(function() {
var preNameEvent = room.timeline[room.timeline.length - 3];
var postNameEvent = room.timeline[room.timeline.length - 1];
expect(preNameEvent.sender.name).toEqual(userName);
expect(postNameEvent.sender.name).toEqual("New Name");
done();
});
});
client.startClient();
httpBackend.flush("/initialSync", 1);
}); });
xit("should set the right room.name", function() { it("should set the right room.name", function(done) {
eventData.chunk = [
utils.mkEvent({
user: userId, room: roomId, type: "m.room.name", content: {
name: "Room 2"
}
})
];
client.on("syncComplete", function() {
var room = client.getRoom(roomId);
var nameEmitCount = 0;
client.on("Room.name", function(rm) {
nameEmitCount += 1;
});
httpBackend.flush("/events", 1).done(function() {
expect(nameEmitCount).toEqual(1);
expect(room.name).toEqual("Room 2");
// do another round
eventData.chunk = [
utils.mkEvent({
user: userId, room: roomId, type: "m.room.name", content: {
name: "Room 3"
}
})
];
httpBackend.when("GET", "/events").respond(200, eventData);
httpBackend.flush("/events", 1).done(function() {
expect(nameEmitCount).toEqual(2);
expect(room.name).toEqual("Room 3");
done();
});
});
});
client.startClient();
httpBackend.flush("/initialSync", 1);
}); });
xit("should set the right room members", function() { it("should set the right room members", function(done) {
var userC = "@cee:bar";
var userD = "@dee:bar";
eventData.chunk = [
utils.mkMembership({
user: userC, room: roomId, mship: "join", name: "C"
}),
utils.mkMembership({
user: userC, room: roomId, mship: "invite", skey: userD
})
];
client.on("syncComplete", function() {
var room = client.getRoom(roomId);
httpBackend.flush("/events", 1).done(function() {
expect(room.currentState.getMembers().length).toEqual(4);
expect(room.currentState.getMember(userC).name).toEqual("C");
expect(room.currentState.getMember(userC).membership).toEqual(
"join"
);
expect(room.currentState.getMember(userD).name).toEqual(userD);
expect(room.currentState.getMember(userD).membership).toEqual(
"invite"
);
done();
});
});
client.startClient();
httpBackend.flush("/initialSync", 1);
}); });
}); });
}); });