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: [
utils.mkMembership("!erufh:bar", "join", "@foo:bar"),
utils.mkEvent("m.room.create", "!erufh:bar", "@foo:bar", {
utils.mkMembership({
room: "!erufh:bar", mship: "join", user: "@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({
room: "!erufh:bar", user: "@foo:bar", msg: ":D"
}),
utils.mkEvent("m.typing", "!erufh:bar", "bar", {
utils.mkEvent({
type: "m.typing", room: "!erufh:bar", content: {
user_ids: ["@foo:bar"]
}
})
]
};
@ -327,20 +334,24 @@ describe("MatrixClient", function() {
]
},
state: [
utils.mkEvent(
"m.room.name", roomOne, otherUserId,
{
utils.mkEvent({
type: "m.room.name", room: roomOne, user: otherUserId,
content: {
name: "Old room name"
}
),
utils.mkMembership(roomOne, "join", otherUserId),
utils.mkMembership(roomOne, "join", selfUserId),
utils.mkEvent(
"m.room.create", roomOne, selfUserId,
{
}),
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
}
)
})
]
},
{
@ -356,16 +367,19 @@ describe("MatrixClient", function() {
]
},
state: [
utils.mkMembership(
roomTwo, "join", otherUserId, null, otherDisplayName
),
utils.mkMembership(roomTwo, "join", selfUserId),
utils.mkEvent(
"m.room.create", roomTwo, selfUserId,
{
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
}
)
})
]
}
]
@ -374,14 +388,16 @@ describe("MatrixClient", function() {
start: "s_5_3",
end: "e_6_7",
chunk: [
utils.mkEvent("m.room.name", roomOne, selfUserId, {
name: "A new room name"
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("m.typing", roomTwo, undefined, {
user_ids: [otherUserId]
utils.mkEvent({
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.
* @param {string} type The event.type
* @param {string} room The event.room_id
* @param {string} userId The event.user_id
* @param {Object} content The event.content
* Create an Event.
* @param {Object} opts Values for the event.
* @param {string} opts.type The event.type
* @param {string} opts.room The event.room_id
* @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.
*/
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 = {
type: type,
room_id: room,
user_id: userId,
content: content,
type: opts.type,
room_id: opts.room,
user_id: opts.user,
content: opts.content,
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",
"com.example.state"].indexOf(type) !== -1) {
"com.example.state"].indexOf(opts.type) !== -1) {
event.state_key = "";
}
return event;
return opts.event ? new MatrixEvent(event) : event;
};
/**
* Create an m.room.member POJO.
* @param {string} room The room ID for the event.
* @param {string} membership The content.membership for the event.
* @param {string} userId The user ID for the event.
* @param {string} otherUserId The other user ID for the event if applicable
* Create an m.room.member event.
* @param {Object} opts Values for the membership.
* @param {string} opts.room The room ID for the event.
* @param {string} opts.mship The content.membership for the event.
* @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.
* @param {string} displayName The content.displayname for the event.
* @param {string} avatarUrl The content.avatar_url for the event.
* @return {Object} The event
* @param {string} opts.name The content.displayname for the event.
* @param {string} opts.url The content.avatar_url for the event.
* @param {boolean} opts.event True to make a MatrixEvent.
* @return {Object|MatrixEvent} The event
*/
module.exports.mkMembership = function(room, membership, userId, otherUserId,
displayName, avatarUrl) {
var event = module.exports.mkEvent("m.room.member", room, userId, {
membership: membership,
displayname: displayName,
avatar_url: avatarUrl
});
event.state_key = userId;
if (["invite", "ban"].indexOf(membership) !== -1) {
event.state_key = otherUserId;
module.exports.mkMembership = function(opts) {
opts.type = "m.room.member";
if (!opts.skey) {
opts.skey = opts.user;
}
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 {string} opts.room The room 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 {boolean} opts.event True to make a MatrixEvent.
* @return {Object} The event
* @return {Object|MatrixEvent} The event
*/
module.exports.mkMessage = function(opts) {
opts.type = "m.room.message";
if (!opts.msg) {
opts.msg = "Random->" + Math.random();
}
if (!opts.room || !opts.user) {
throw new Error("Missing .room or .user from %s", opts);
}
opts.type = "m.room.message";
opts.content = {
msgtype: "m.text",
body: opts.msg
};
//var pojo = module.exports.mkEvent(opts);
var pojo = module.exports.mkEvent(
opts.type, opts.room, opts.user, opts.content
);
return opts.event ? new MatrixEvent(pojo) : pojo;
return module.exports.mkEvent(opts);
};

View File

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

View File

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