You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-23 17:02:25 +03:00
* fix relation sender filter Signed-off-by: Kerry Archibald <kerrya@element.io> * lint Signed-off-by: Kerry Archibald <kerrya@element.io>
129 lines
4.3 KiB
JavaScript
129 lines
4.3 KiB
JavaScript
import { RelationType, UNSTABLE_FILTER_RELATION_SENDERS, UNSTABLE_FILTER_RELATION_TYPES } from "../../src";
|
|
import { FilterComponent } from "../../src/filter-component";
|
|
import { mkEvent } from '../test-utils';
|
|
|
|
describe("Filter Component", function() {
|
|
describe("types", function() {
|
|
it("should filter out events with other types", function() {
|
|
const filter = new FilterComponent({ types: ['m.room.message'] });
|
|
const event = mkEvent({
|
|
type: 'm.room.member',
|
|
content: { },
|
|
room: 'roomId',
|
|
event: true,
|
|
});
|
|
|
|
const checkResult = filter.check(event);
|
|
|
|
expect(checkResult).toBe(false);
|
|
});
|
|
|
|
it("should validate events with the same type", function() {
|
|
const filter = new FilterComponent({ types: ['m.room.message'] });
|
|
const event = mkEvent({
|
|
type: 'm.room.message',
|
|
content: { },
|
|
room: 'roomId',
|
|
event: true,
|
|
});
|
|
|
|
const checkResult = filter.check(event);
|
|
|
|
expect(checkResult).toBe(true);
|
|
});
|
|
|
|
it("should filter out events by relation participation", function() {
|
|
const currentUserId = '@me:server.org';
|
|
const filter = new FilterComponent({
|
|
[UNSTABLE_FILTER_RELATION_SENDERS.name]: currentUserId,
|
|
}, currentUserId);
|
|
|
|
const threadRootNotParticipated = mkEvent({
|
|
type: 'm.room.message',
|
|
content: {},
|
|
room: 'roomId',
|
|
user: '@someone-else:server.org',
|
|
event: true,
|
|
unsigned: {
|
|
"m.relations": {
|
|
[RelationType.Thread]: {
|
|
count: 2,
|
|
current_user_participated: false,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(filter.check(threadRootNotParticipated)).toBe(false);
|
|
});
|
|
|
|
it("should keep events by relation participation", function() {
|
|
const currentUserId = '@me:server.org';
|
|
const filter = new FilterComponent({
|
|
[UNSTABLE_FILTER_RELATION_SENDERS.name]: currentUserId,
|
|
}, currentUserId);
|
|
|
|
const threadRootParticipated = mkEvent({
|
|
type: 'm.room.message',
|
|
content: {},
|
|
unsigned: {
|
|
"m.relations": {
|
|
[RelationType.Thread]: {
|
|
count: 2,
|
|
current_user_participated: true,
|
|
},
|
|
},
|
|
},
|
|
user: '@someone-else:server.org',
|
|
room: 'roomId',
|
|
event: true,
|
|
});
|
|
|
|
expect(filter.check(threadRootParticipated)).toBe(true);
|
|
});
|
|
|
|
it("should filter out events by relation type", function() {
|
|
const filter = new FilterComponent({
|
|
[UNSTABLE_FILTER_RELATION_TYPES.name]: RelationType.Thread,
|
|
});
|
|
|
|
const referenceRelationEvent = mkEvent({
|
|
type: 'm.room.message',
|
|
content: {},
|
|
room: 'roomId',
|
|
event: true,
|
|
unsigned: {
|
|
"m.relations": {
|
|
[RelationType.Reference]: {},
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(filter.check(referenceRelationEvent)).toBe(false);
|
|
});
|
|
|
|
it("should keep events by relation type", function() {
|
|
const filter = new FilterComponent({
|
|
[UNSTABLE_FILTER_RELATION_TYPES.name]: RelationType.Thread,
|
|
});
|
|
|
|
const threadRootEvent = mkEvent({
|
|
type: 'm.room.message',
|
|
content: {},
|
|
unsigned: {
|
|
"m.relations": {
|
|
[RelationType.Thread]: {
|
|
count: 2,
|
|
current_user_participated: true,
|
|
},
|
|
},
|
|
},
|
|
room: 'roomId',
|
|
event: true,
|
|
});
|
|
|
|
expect(filter.check(threadRootEvent)).toBe(true);
|
|
});
|
|
});
|
|
});
|