You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-07-31 15:24:23 +03:00
Restructure test layout.
This commit is contained in:
@ -3,12 +3,11 @@ var sdk = require("../..");
|
|||||||
var HttpBackend = require("../mock-request");
|
var HttpBackend = require("../mock-request");
|
||||||
var utils = require("../test-utils");
|
var utils = require("../test-utils");
|
||||||
|
|
||||||
describe("MatrixClient", function() {
|
describe("MatrixClient events", function() {
|
||||||
var baseUrl = "http://localhost.or.something";
|
var baseUrl = "http://localhost.or.something";
|
||||||
var client, httpBackend;
|
var client, httpBackend;
|
||||||
var selfUserId = "@alice:localhost";
|
var selfUserId = "@alice:localhost";
|
||||||
var selfAccessToken = "aseukfgwef";
|
var selfAccessToken = "aseukfgwef";
|
||||||
var otherUserId = "@bob:localhost";
|
|
||||||
|
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
utils.beforeEach(this);
|
utils.beforeEach(this);
|
||||||
@ -25,45 +24,7 @@ describe("MatrixClient", function() {
|
|||||||
httpBackend.verifyNoOutstandingExpectation();
|
httpBackend.verifyNoOutstandingExpectation();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("startClient", function() {
|
describe("emissions", 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() {
|
|
||||||
var initialSync = {
|
var initialSync = {
|
||||||
end: "s_5_3",
|
end: "s_5_3",
|
||||||
presence: [{
|
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();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
});
|
217
spec/integ/matrix-client-syncing.spec.js
Normal file
217
spec/integ/matrix-client-syncing.spec.js
Normal file
@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
@ -15,56 +15,59 @@ describe("RoomMember", function() {
|
|||||||
member = new RoomMember(roomId, userA);
|
member = new RoomMember(roomId, userA);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("setPowerLevelEvent should set 'powerLevel' and 'powerLevelNorm'.",
|
describe("setPowerLevelEvent", function() {
|
||||||
function() {
|
it("should set 'powerLevel' and 'powerLevelNorm'.", function() {
|
||||||
var event = utils.mkEvent({
|
var event = utils.mkEvent({
|
||||||
type: "m.room.power_levels",
|
type: "m.room.power_levels",
|
||||||
room: roomId,
|
room: roomId,
|
||||||
user: userA,
|
user: userA,
|
||||||
content: {
|
content: {
|
||||||
users_default: 20,
|
users_default: 20,
|
||||||
users: {
|
users: {
|
||||||
"@bertha:bar": 200,
|
"@bertha:bar": 200,
|
||||||
"@invalid:user": 10 // shouldn't barf on this.
|
"@invalid:user": 10 // shouldn't barf on this.
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
event: true
|
event: true
|
||||||
});
|
});
|
||||||
member.setPowerLevelEvent(event);
|
member.setPowerLevelEvent(event);
|
||||||
expect(member.powerLevel).toEqual(20);
|
expect(member.powerLevel).toEqual(20);
|
||||||
expect(member.powerLevelNorm).toEqual(10);
|
expect(member.powerLevelNorm).toEqual(10);
|
||||||
|
|
||||||
var memberB = new RoomMember(roomId, userB);
|
var memberB = new RoomMember(roomId, userB);
|
||||||
memberB.setPowerLevelEvent(event);
|
memberB.setPowerLevelEvent(event);
|
||||||
expect(memberB.powerLevel).toEqual(200);
|
expect(memberB.powerLevel).toEqual(200);
|
||||||
expect(memberB.powerLevelNorm).toEqual(100);
|
expect(memberB.powerLevelNorm).toEqual(100);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("setTypingEvent should set 'typing'", function() {
|
describe("setTypingEvent", function() {
|
||||||
member.typing = false;
|
it("should set 'typing'", function() {
|
||||||
var memberB = new RoomMember(roomId, userB);
|
member.typing = false;
|
||||||
memberB.typing = true;
|
var memberB = new RoomMember(roomId, userB);
|
||||||
var memberC = new RoomMember(roomId, userC);
|
memberB.typing = true;
|
||||||
memberC.typing = true;
|
var memberC = new RoomMember(roomId, userC);
|
||||||
|
memberC.typing = true;
|
||||||
|
|
||||||
var event = utils.mkEvent({
|
var event = utils.mkEvent({
|
||||||
type: "m.typing",
|
type: "m.typing",
|
||||||
user: userA,
|
user: userA,
|
||||||
room: roomId,
|
room: roomId,
|
||||||
content: {
|
content: {
|
||||||
user_ids: [
|
user_ids: [
|
||||||
userA, userC
|
userA, userC
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
event: true
|
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);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user