1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-07-31 15:24:23 +03:00

Convert all helper functions which make events to use kwargs

This commit is contained in:
Kegan Dougal
2015-06-24 11:43:16 +01:00
parent 26a23b19b3
commit f763eb3f37
4 changed files with 141 additions and 105 deletions

View File

@ -88,9 +88,14 @@ describe("MatrixClient", function() {
] ]
}, },
state: [ state: [
utils.mkMembership("!erufh:bar", "join", "@foo:bar"), utils.mkMembership({
utils.mkEvent("m.room.create", "!erufh:bar", "@foo:bar", { room: "!erufh:bar", mship: "join", user: "@foo:bar"
creator: "@foo:bar" }),
utils.mkEvent({
type: "m.room.create", room: "!erufh:bar", user: "@foo:bar",
content: {
creator: "@foo:bar"
}
}) })
] ]
}] }]
@ -105,8 +110,10 @@ describe("MatrixClient", function() {
utils.mkMessage({ utils.mkMessage({
room: "!erufh:bar", user: "@foo:bar", msg: ":D" room: "!erufh:bar", user: "@foo:bar", msg: ":D"
}), }),
utils.mkEvent("m.typing", "!erufh:bar", "bar", { utils.mkEvent({
user_ids: ["@foo:bar"] type: "m.typing", room: "!erufh:bar", content: {
user_ids: ["@foo:bar"]
}
}) })
] ]
}; };
@ -327,20 +334,24 @@ describe("MatrixClient", function() {
] ]
}, },
state: [ state: [
utils.mkEvent( utils.mkEvent({
"m.room.name", roomOne, otherUserId, type: "m.room.name", room: roomOne, user: otherUserId,
{ content: {
name: "Old room name" name: "Old room name"
} }
), }),
utils.mkMembership(roomOne, "join", otherUserId), utils.mkMembership({
utils.mkMembership(roomOne, "join", selfUserId), room: roomOne, mship: "join", user: otherUserId
utils.mkEvent( }),
"m.room.create", roomOne, selfUserId, utils.mkMembership({
{ room: roomOne, mship: "join", user: selfUserId
}),
utils.mkEvent({
type: "m.room.create", room: roomOne, user: selfUserId,
content: {
creator: selfUserId creator: selfUserId
} }
) })
] ]
}, },
{ {
@ -356,16 +367,19 @@ describe("MatrixClient", function() {
] ]
}, },
state: [ state: [
utils.mkMembership( utils.mkMembership({
roomTwo, "join", otherUserId, null, otherDisplayName room: roomTwo, mship: "join", user: otherUserId,
), name: otherDisplayName
utils.mkMembership(roomTwo, "join", selfUserId), }),
utils.mkEvent( utils.mkMembership({
"m.room.create", roomTwo, selfUserId, room: roomTwo, mship: "join", user: selfUserId
{ }),
utils.mkEvent({
type: "m.room.create", room: roomTwo, user: selfUserId,
content: {
creator: selfUserId creator: selfUserId
} }
) })
] ]
} }
] ]
@ -374,14 +388,16 @@ describe("MatrixClient", function() {
start: "s_5_3", start: "s_5_3",
end: "e_6_7", end: "e_6_7",
chunk: [ chunk: [
utils.mkEvent("m.room.name", roomOne, selfUserId, { utils.mkEvent({
name: "A new room name" type: "m.room.name", room: roomOne, user: selfUserId,
content: { name: "A new room name" }
}), }),
utils.mkMessage({ utils.mkMessage({
room: roomTwo, user: otherUserId, msg: msgText room: roomTwo, user: otherUserId, msg: msgText
}), }),
utils.mkEvent("m.typing", roomTwo, undefined, { utils.mkEvent({
user_ids: [otherUserId] type: "m.typing", room: roomTwo,
content: { user_ids: [otherUserId] }
}) })
] ]
}; };

View File

@ -44,78 +44,87 @@ module.exports.mock = function(constr, name) {
}; };
/** /**
* Create a JSON object representing an Event. * Create an Event.
* @param {string} type The event.type * @param {Object} opts Values for the event.
* @param {string} room The event.room_id * @param {string} opts.type The event.type
* @param {string} userId The event.user_id * @param {string} opts.room The event.room_id
* @param {Object} content The event.content * @param {string} opts.user The event.user_id
* @param {string} opts.skey Optional. The state key (auto inserts empty string)
* @param {Object} opts.content The event.content
* @param {boolean} opts.event True to make a MatrixEvent.
* @return {Object} a JSON object representing this event. * @return {Object} a JSON object representing this event.
*/ */
module.exports.mkEvent = function(type, room, userId, content) { module.exports.mkEvent = function(opts) {
if (!opts.type || !opts.content) {
throw new Error("Missing .type or .content =>"+JSON.stringify(opts));
}
var event = { var event = {
type: type, type: opts.type,
room_id: room, room_id: opts.room,
user_id: userId, user_id: opts.user,
content: content, content: opts.content,
event_id: "$" + Math.random() + "-" + Math.random() event_id: "$" + Math.random() + "-" + Math.random()
}; };
if (["m.room.name", "m.room.topic", "m.room.create", "m.room.join_rules", if (opts.skey) {
event.state_key = opts.skey;
}
else if (["m.room.name", "m.room.topic", "m.room.create", "m.room.join_rules",
"m.room.power_levels", "m.room.topic", "m.room.power_levels", "m.room.topic",
"com.example.state"].indexOf(type) !== -1) { "com.example.state"].indexOf(opts.type) !== -1) {
event.state_key = ""; event.state_key = "";
} }
return event; return opts.event ? new MatrixEvent(event) : event;
}; };
/** /**
* Create an m.room.member POJO. * Create an m.room.member event.
* @param {string} room The room ID for the event. * @param {Object} opts Values for the membership.
* @param {string} membership The content.membership for the event. * @param {string} opts.room The room ID for the event.
* @param {string} userId The user ID for the event. * @param {string} opts.mship The content.membership for the event.
* @param {string} otherUserId The other user ID for the event if applicable * @param {string} opts.user The user ID for the event.
* @param {string} opts.skey The other user ID for the event if applicable
* e.g. for invites/bans. * e.g. for invites/bans.
* @param {string} displayName The content.displayname for the event. * @param {string} opts.name The content.displayname for the event.
* @param {string} avatarUrl The content.avatar_url for the event. * @param {string} opts.url The content.avatar_url for the event.
* @return {Object} The event * @param {boolean} opts.event True to make a MatrixEvent.
* @return {Object|MatrixEvent} The event
*/ */
module.exports.mkMembership = function(room, membership, userId, otherUserId, module.exports.mkMembership = function(opts) {
displayName, avatarUrl) { opts.type = "m.room.member";
var event = module.exports.mkEvent("m.room.member", room, userId, { if (!opts.skey) {
membership: membership, opts.skey = opts.user;
displayname: displayName,
avatar_url: avatarUrl
});
event.state_key = userId;
if (["invite", "ban"].indexOf(membership) !== -1) {
event.state_key = otherUserId;
} }
return event; if (!opts.mship) {
throw new Error("Missing .mship => "+JSON.stringify(opts));
}
opts.content = {
membership: opts.mship
};
if (opts.name) { opts.content.displayname = opts.name; }
if (opts.url) { opts.content.avatar_url = opts.url; }
return module.exports.mkEvent(opts);
}; };
/** /**
* Create an m.room.message POJO. * Create an m.room.message event.
* @param {Object} opts Values for the message * @param {Object} opts Values for the message
* @param {string} opts.room The room ID for the event. * @param {string} opts.room The room ID for the event.
* @param {string} opts.user The user ID for the event. * @param {string} opts.user The user ID for the event.
* @param {string} opts.msg Optional. The content.body for the event. * @param {string} opts.msg Optional. The content.body for the event.
* @param {boolean} opts.event True to make a MatrixEvent. * @param {boolean} opts.event True to make a MatrixEvent.
* @return {Object} The event * @return {Object|MatrixEvent} The event
*/ */
module.exports.mkMessage = function(opts) { module.exports.mkMessage = function(opts) {
opts.type = "m.room.message";
if (!opts.msg) { if (!opts.msg) {
opts.msg = "Random->" + Math.random(); opts.msg = "Random->" + Math.random();
} }
if (!opts.room || !opts.user) { if (!opts.room || !opts.user) {
throw new Error("Missing .room or .user from %s", opts); throw new Error("Missing .room or .user from %s", opts);
} }
opts.type = "m.room.message";
opts.content = { opts.content = {
msgtype: "m.text", msgtype: "m.text",
body: opts.msg body: opts.msg
}; };
//var pojo = module.exports.mkEvent(opts); return module.exports.mkEvent(opts);
var pojo = module.exports.mkEvent(
opts.type, opts.room, opts.user, opts.content
);
return opts.event ? new MatrixEvent(pojo) : pojo;
}; };

View File

@ -18,15 +18,19 @@ describe("RoomMember", function() {
it("setPowerLevelEvent should set 'powerLevel' and 'powerLevelNorm'.", it("setPowerLevelEvent should set 'powerLevel' and 'powerLevelNorm'.",
function() { function() {
var event = new MatrixEvent( var event = utils.mkEvent({
utils.mkEvent("m.room.power_levels", roomId, userA, { type: "m.room.power_levels",
room: roomId,
user: userA,
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
});
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);
@ -44,13 +48,17 @@ describe("RoomMember", function() {
var memberC = new RoomMember(roomId, userC); var memberC = new RoomMember(roomId, userC);
memberC.typing = true; memberC.typing = true;
var event = new MatrixEvent( var event = utils.mkEvent({
utils.mkEvent("m.typing", roomId, userA, { type: "m.typing",
user: userA,
room: roomId,
content: {
user_ids: [ user_ids: [
userA, userC userA, userC
] ]
}) },
); event: true
});
member.setTypingEvent(event); member.setTypingEvent(event);
memberB.setTypingEvent(event); memberB.setTypingEvent(event);
memberC.setTypingEvent(event); memberC.setTypingEvent(event);

View File

@ -45,9 +45,10 @@ describe("Room", function() {
utils.mkMessage({ utils.mkMessage({
room: roomId, user: userA, msg: "changing room name", event: true room: roomId, user: userA, msg: "changing room name", event: true
}), }),
new MatrixEvent(utils.mkEvent("m.room.name", roomId, userA, { utils.mkEvent({
name: "New Room Name" type: "m.room.name", room: roomId, user: userA, event: true,
})) content: { name: "New Room Name" }
})
]; ];
it("should be able to add events to the end", function() { it("should be able to add events to the end", function() {
@ -116,12 +117,14 @@ describe("Room", function() {
return null; return null;
}); });
var newEv = new MatrixEvent(utils.mkEvent("m.room.name", roomId, userA, { var newEv = utils.mkEvent({
name: "New Room Name" type: "m.room.name", room: roomId, user: userA, event: true,
})); content: { name: "New Room Name" }
var oldEv = new MatrixEvent(utils.mkEvent("m.room.name", roomId, userA, { });
name: "Old Room Name" var oldEv = utils.mkEvent({
})); type: "m.room.name", room: roomId, user: userA, event: true,
content: { name: "Old Room Name" }
});
room.addEventsToTimeline([newEv]); room.addEventsToTimeline([newEv]);
expect(newEv.sender).toEqual(sentinel); expect(newEv.sender).toEqual(sentinel);
room.addEventsToTimeline([oldEv], true); room.addEventsToTimeline([oldEv], true);
@ -153,12 +156,12 @@ describe("Room", function() {
return null; return null;
}); });
var newEv = new MatrixEvent( var newEv = utils.mkMembership({
utils.mkMembership(roomId, "invite", userB, userA) room: roomId, mship: "invite", user: userB, skey: userA, event: true
); });
var oldEv = new MatrixEvent( var oldEv = utils.mkMembership({
utils.mkMembership(roomId, "ban", userB, userA) room: roomId, mship: "ban", user: userB, skey: userA, event: true
); });
room.addEventsToTimeline([newEv]); room.addEventsToTimeline([newEv]);
expect(newEv.target).toEqual(sentinel); expect(newEv.target).toEqual(sentinel);
room.addEventsToTimeline([oldEv], true); room.addEventsToTimeline([oldEv], true);
@ -250,32 +253,32 @@ describe("Room", function() {
}; };
var setJoinRule = function(rule) { var setJoinRule = function(rule) {
stateLookup["m.room.join_rules$"] = new MatrixEvent( stateLookup["m.room.join_rules$"] = utils.mkEvent({
utils.mkEvent("m.room.join_rules", roomId, userA, { type: "m.room.join_rules", room: roomId, user: userA, content: {
join_rule: rule join_rule: rule
}) }, event: true
); });
}; };
var setAliases = function(aliases, stateKey) { var setAliases = function(aliases, stateKey) {
if (!stateKey) { stateKey = "flibble"; } if (!stateKey) { stateKey = "flibble"; }
stateLookup["m.room.aliases$" + stateKey] = new MatrixEvent( stateLookup["m.room.aliases$" + stateKey] = utils.mkEvent({
utils.mkEvent("m.room.aliases", roomId, stateKey, { type: "m.room.aliases", room: roomId, skey: stateKey, content: {
aliases: aliases aliases: aliases
}) }, event: true
); });
}; };
var setRoomName = function(name) { var setRoomName = function(name) {
stateLookup["m.room.name$"] = new MatrixEvent( stateLookup["m.room.name$"] = utils.mkEvent({
utils.mkEvent("m.room.name", roomId, userA, { type: "m.room.name", room: roomId, user: userA, content: {
name: name name: name
}) }, event: true
); });
}; };
var addMember = function(userId, state) { var addMember = function(userId, state) {
if (!state) { state = "join"; } if (!state) { state = "join"; }
stateLookup["m.room.member$" + userId] = new MatrixEvent( stateLookup["m.room.member$" + userId] = utils.mkMembership({
utils.mkMembership(roomId, state, userId, userId) room: roomId, mship: state, user: userId, skey: userId, event: true
); });
}; };
beforeEach(function() { beforeEach(function() {