mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Add mRoomName and orderMembersList filter tests. Mark FIXME on broken tests for now.
This commit is contained in:
parent
7465250141
commit
c5eec32c58
@ -1,8 +1,243 @@
|
||||
describe('durationFilter', function() {
|
||||
describe('mRoomName filter', function() {
|
||||
var filter, mRoomName;
|
||||
|
||||
var roomId = "!weufhewifu:matrix.org";
|
||||
|
||||
// test state values (f.e. test)
|
||||
var testUserId, testAlias, testDisplayName, testOtherDisplayName, testRoomState;
|
||||
|
||||
// mocked services which return the test values above.
|
||||
var matrixService = {
|
||||
getRoomIdToAliasMapping: function(room_id) {
|
||||
return testAlias;
|
||||
},
|
||||
|
||||
config: function() {
|
||||
return {
|
||||
user_id: testUserId
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
var eventHandlerService = {
|
||||
getUserDisplayName: function(room_id, user_id) {
|
||||
if (user_id === testUserId) {
|
||||
return testDisplayName;
|
||||
}
|
||||
return testOtherDisplayName;
|
||||
}
|
||||
};
|
||||
|
||||
var modelService = {
|
||||
getRoom: function(room_id) {
|
||||
return {
|
||||
current_room_state: testRoomState
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
beforeEach(function() {
|
||||
// inject mocked dependencies
|
||||
module(function ($provide) {
|
||||
$provide.value('matrixService', matrixService);
|
||||
$provide.value('eventHandlerService', eventHandlerService);
|
||||
$provide.value('modelService', modelService);
|
||||
});
|
||||
|
||||
module('matrixFilter');
|
||||
});
|
||||
|
||||
beforeEach(inject(function($filter) {
|
||||
filter = $filter;
|
||||
mRoomName = filter("mRoomName");
|
||||
|
||||
// purge the previous test values
|
||||
testUserId = undefined;
|
||||
testAlias = undefined;
|
||||
testDisplayName = undefined;
|
||||
testOtherDisplayName = undefined;
|
||||
|
||||
// mock up a stub room state
|
||||
testRoomState = {
|
||||
s:{}, // internal; stores the state events
|
||||
state: function(type, key) {
|
||||
// accessor used by filter
|
||||
return key ? this.s[type+key] : this.s[type];
|
||||
},
|
||||
members: {}, // struct used by filter
|
||||
|
||||
// test helper methods
|
||||
setJoinRule: function(rule) {
|
||||
this.s["m.room.join_rules"] = {
|
||||
content: {
|
||||
join_rule: rule
|
||||
}
|
||||
};
|
||||
},
|
||||
setRoomName: function(name) {
|
||||
this.s["m.room.name"] = {
|
||||
content: {
|
||||
name: name
|
||||
}
|
||||
};
|
||||
},
|
||||
setMember: function(user_id, membership, inviter_user_id) {
|
||||
if (!inviter_user_id) {
|
||||
inviter_user_id = user_id;
|
||||
}
|
||||
this.s["m.room.member" + user_id] = {
|
||||
content: {
|
||||
membership: membership
|
||||
},
|
||||
state_key: user_id,
|
||||
user_id: inviter_user_id
|
||||
};
|
||||
this.members[user_id] = this.s["m.room.member" + user_id];
|
||||
}
|
||||
};
|
||||
}));
|
||||
|
||||
/**** ROOM NAME ****/
|
||||
|
||||
it("should show the room name if one exists for private (invite join_rules) rooms.", function() {
|
||||
var roomName = "The Room Name";
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("invite");
|
||||
testRoomState.setRoomName(roomName);
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(roomName);
|
||||
});
|
||||
|
||||
it("should show the room name if one exists for public (public join_rules) rooms.", function() {
|
||||
var roomName = "The Room Name";
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("public");
|
||||
testRoomState.setRoomName(roomName);
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(roomName);
|
||||
});
|
||||
|
||||
/**** ROOM ALIAS ****/
|
||||
|
||||
// FIXME
|
||||
xit("should show the room alias if one exists for private (invite join_rules) rooms if a room name doesn't exist.", function() {
|
||||
var testAlias = "#thealias:matrix.org";
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("invite");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testAlias);
|
||||
});
|
||||
|
||||
// FIXME
|
||||
xit("should show the room alias if one exists for public (public join_rules) rooms if a room name doesn't exist.", function() {
|
||||
var testAlias = "#thealias:matrix.org";
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("public");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testAlias);
|
||||
});
|
||||
|
||||
/**** ROOM ID ****/
|
||||
|
||||
it("should show the room ID for public (public join_rules) rooms if a room name and alias don't exist.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("public");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(roomId);
|
||||
});
|
||||
|
||||
it("should show the room ID for private (invite join_rules) rooms if a room name and alias don't exist and there are >2 members.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("public");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
testRoomState.setMember("@alice:matrix.org", "join");
|
||||
testRoomState.setMember("@bob:matrix.org", "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(roomId);
|
||||
});
|
||||
|
||||
/**** SELF-CHAT ****/
|
||||
|
||||
it("should show your display name for private (invite join_rules) rooms if a room name and alias don't exist and it is a self-chat.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testDisplayName = "Me";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testDisplayName);
|
||||
});
|
||||
|
||||
// FIXME
|
||||
xit("should show your user ID for private (invite join_rules) rooms if a room name and alias don't exist and it is a self-chat and they don't have a display name set.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testUserId);
|
||||
});
|
||||
|
||||
/**** ONE-TO-ONE CHAT ****/
|
||||
|
||||
it("should show the other user's display name for private (invite join_rules) rooms if a room name and alias don't exist and it is a 1:1-chat.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
otherUserId = "@alice:matrix.org";
|
||||
testOtherDisplayName = "Alice";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
testRoomState.setMember("@alice:matrix.org", "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testOtherDisplayName);
|
||||
});
|
||||
|
||||
// FIXME
|
||||
xit("should show the other user's ID for private (invite join_rules) rooms if a room name and alias don't exist and it is a 1:1-chat and they don't have a display name set.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
otherUserId = "@alice:matrix.org";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
testRoomState.setMember("@alice:matrix.org", "join");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(otherUserId);
|
||||
});
|
||||
|
||||
/**** INVITED TO ROOM ****/
|
||||
|
||||
it("should show the other user's display name for private (invite join_rules) rooms if you are invited to it.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testDisplayName = "Me";
|
||||
otherUserId = "@alice:matrix.org";
|
||||
testOtherDisplayName = "Alice";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
testRoomState.setMember(otherUserId, "join");
|
||||
testRoomState.setMember(testUserId, "invite");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(testOtherDisplayName);
|
||||
});
|
||||
|
||||
// FIXME
|
||||
xit("should show the other user's ID for private (invite join_rules) rooms if you are invited to it and the inviter doesn't have a display name.", function() {
|
||||
testUserId = "@me:matrix.org";
|
||||
testDisplayName = "Me";
|
||||
otherUserId = "@alice:matrix.org";
|
||||
testRoomState.setJoinRule("private");
|
||||
testRoomState.setMember(testUserId, "join");
|
||||
testRoomState.setMember(otherUserId, "join");
|
||||
testRoomState.setMember(testUserId, "invite");
|
||||
var output = mRoomName(roomId);
|
||||
expect(output).toEqual(otherUserId);
|
||||
});
|
||||
});
|
||||
|
||||
describe('duration filter', function() {
|
||||
var filter, durationFilter;
|
||||
|
||||
beforeEach(module('matrixWebClient'));
|
||||
beforeEach(module('matrixFilter'));
|
||||
beforeEach(inject(function($filter) {
|
||||
filter = $filter;
|
||||
durationFilter = filter("duration");
|
||||
@ -48,3 +283,209 @@ describe('durationFilter', function() {
|
||||
expect(output).toEqual("2h");
|
||||
});
|
||||
});
|
||||
|
||||
describe('orderMembersList filter', function() {
|
||||
var filter, orderMembersList;
|
||||
|
||||
beforeEach(module('matrixWebClient'));
|
||||
beforeEach(inject(function($filter) {
|
||||
filter = $filter;
|
||||
orderMembersList = filter("orderMembersList");
|
||||
}));
|
||||
|
||||
it("should sort a single entry", function() {
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: 50,
|
||||
last_updated: 1415266943964
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: 50,
|
||||
last_updated: 1415266943964
|
||||
}]);
|
||||
});
|
||||
|
||||
it("should sort by taking last_active_ago into account", function() {
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
"@b:example.com": {
|
||||
last_active_ago: 50,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
"@c:example.com": {
|
||||
last_active_ago: 99999,
|
||||
last_updated: 1415266943964
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([
|
||||
{
|
||||
id: "@b:example.com",
|
||||
last_active_ago: 50,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@c:example.com",
|
||||
last_active_ago: 99999,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("should sort by taking last_updated into account", function() {
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
"@b:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266900000
|
||||
},
|
||||
"@c:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943000
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([
|
||||
{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@c:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943000
|
||||
},
|
||||
{
|
||||
id: "@b:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266900000
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("should sort by taking last_updated and last_active_ago into account",
|
||||
function() {
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943000
|
||||
},
|
||||
"@b:example.com": {
|
||||
last_active_ago: 100000,
|
||||
last_updated: 1415266943900
|
||||
},
|
||||
"@c:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([
|
||||
{
|
||||
id: "@c:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943000
|
||||
},
|
||||
{
|
||||
id: "@b:example.com",
|
||||
last_active_ago: 100000,
|
||||
last_updated: 1415266943900
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
// SYWEB-26 comment
|
||||
it("should sort members who do not have last_active_ago value at the end of the list",
|
||||
function() {
|
||||
// single undefined entry
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
"@b:example.com": {
|
||||
last_active_ago: 100000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
"@c:example.com": {
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([
|
||||
{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: 1000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@b:example.com",
|
||||
last_active_ago: 100000,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
{
|
||||
id: "@c:example.com",
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("should sort multiple members who do not have last_active_ago according to presence",
|
||||
function() {
|
||||
// single undefined entry
|
||||
var output = orderMembersList({
|
||||
"@a:example.com": {
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "unavailable"
|
||||
},
|
||||
"@b:example.com": {
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "online"
|
||||
},
|
||||
"@c:example.com": {
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "offline"
|
||||
}
|
||||
});
|
||||
expect(output).toEqual([
|
||||
{
|
||||
id: "@b:example.com",
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "online"
|
||||
},
|
||||
{
|
||||
id: "@a:example.com",
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "unavailable"
|
||||
},
|
||||
{
|
||||
id: "@c:example.com",
|
||||
last_active_ago: undefined,
|
||||
last_updated: 1415266943964,
|
||||
presence: "offline"
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user