Apply prettier formatting
This commit is contained in:
parent
1cac306093
commit
526645c791
1576 changed files with 65385 additions and 62478 deletions
|
@ -15,26 +15,23 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import { EventType, MatrixClient, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
|
||||
import TestRenderer from 'react-test-renderer';
|
||||
import TestRenderer from "react-test-renderer";
|
||||
import { ReactElement } from "react";
|
||||
import { mocked } from "jest-mock";
|
||||
|
||||
import { getSenderName, textForEvent } from "../src/TextForEvent";
|
||||
import SettingsStore from "../src/settings/SettingsStore";
|
||||
import { createTestClient, stubClient } from './test-utils';
|
||||
import { MatrixClientPeg } from '../src/MatrixClientPeg';
|
||||
import UserIdentifierCustomisations from '../src/customisations/UserIdentifier';
|
||||
import { createTestClient, stubClient } from "./test-utils";
|
||||
import { MatrixClientPeg } from "../src/MatrixClientPeg";
|
||||
import UserIdentifierCustomisations from "../src/customisations/UserIdentifier";
|
||||
import { ElementCall } from "../src/models/Call";
|
||||
|
||||
jest.mock("../src/settings/SettingsStore");
|
||||
jest.mock('../src/customisations/UserIdentifier', () => ({
|
||||
getDisplayUserIdentifier: jest.fn().mockImplementation(userId => userId),
|
||||
jest.mock("../src/customisations/UserIdentifier", () => ({
|
||||
getDisplayUserIdentifier: jest.fn().mockImplementation((userId) => userId),
|
||||
}));
|
||||
|
||||
function mockPinnedEvent(
|
||||
pinnedMessageIds?: string[],
|
||||
prevPinnedMessageIds?: string[],
|
||||
): MatrixEvent {
|
||||
function mockPinnedEvent(pinnedMessageIds?: string[], prevPinnedMessageIds?: string[]): MatrixEvent {
|
||||
return new MatrixEvent({
|
||||
type: "m.room.pinned_events",
|
||||
state_key: "",
|
||||
|
@ -53,31 +50,33 @@ function mockPinnedEvent(
|
|||
// and should be replaced with snapshots.
|
||||
function renderComponent(component): string {
|
||||
const serializeObject = (object): string => {
|
||||
if (typeof object === 'string') {
|
||||
return object === ' ' ? '' : object;
|
||||
if (typeof object === "string") {
|
||||
return object === " " ? "" : object;
|
||||
}
|
||||
|
||||
if (Array.isArray(object) && object.length === 1 && typeof object[0] === 'string') {
|
||||
if (Array.isArray(object) && object.length === 1 && typeof object[0] === "string") {
|
||||
return object[0];
|
||||
}
|
||||
|
||||
if (object['type'] !== undefined && typeof object['children'] !== undefined) {
|
||||
if (object["type"] !== undefined && typeof object["children"] !== undefined) {
|
||||
return serializeObject(object.children);
|
||||
}
|
||||
|
||||
if (!Array.isArray(object)) {
|
||||
return '';
|
||||
return "";
|
||||
}
|
||||
|
||||
return object.map(child => {
|
||||
return serializeObject(child);
|
||||
}).join('');
|
||||
return object
|
||||
.map((child) => {
|
||||
return serializeObject(child);
|
||||
})
|
||||
.join("");
|
||||
};
|
||||
|
||||
return serializeObject(component.toJSON());
|
||||
}
|
||||
|
||||
describe('TextForEvent', () => {
|
||||
describe("TextForEvent", () => {
|
||||
describe("getSenderName()", () => {
|
||||
it("Prefers sender.name", () => {
|
||||
expect(getSenderName({ sender: { name: "Alice" } } as MatrixEvent)).toBe("Alice");
|
||||
|
@ -93,11 +92,11 @@ describe('TextForEvent', () => {
|
|||
describe("TextForPinnedEvent", () => {
|
||||
beforeAll(() => {
|
||||
// enable feature_pinning setting
|
||||
(SettingsStore.getValue as jest.Mock).mockImplementation(feature => feature === 'feature_pinning');
|
||||
(SettingsStore.getValue as jest.Mock).mockImplementation((feature) => feature === "feature_pinning");
|
||||
});
|
||||
|
||||
it("mentions message when a single message was pinned, with no previously pinned messages", () => {
|
||||
const event = mockPinnedEvent(['message-1']);
|
||||
const event = mockPinnedEvent(["message-1"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -107,7 +106,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("mentions message when a single message was pinned, with multiple previously pinned messages", () => {
|
||||
const event = mockPinnedEvent(['message-1', 'message-2', 'message-3'], ['message-1', 'message-2']);
|
||||
const event = mockPinnedEvent(["message-1", "message-2", "message-3"], ["message-1", "message-2"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -117,7 +116,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("mentions message when a single message was unpinned, with a single message previously pinned", () => {
|
||||
const event = mockPinnedEvent([], ['message-1']);
|
||||
const event = mockPinnedEvent([], ["message-1"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -127,7 +126,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("mentions message when a single message was unpinned, with multiple previously pinned messages", () => {
|
||||
const event = mockPinnedEvent(['message-2'], ['message-1', 'message-2']);
|
||||
const event = mockPinnedEvent(["message-2"], ["message-1", "message-2"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -137,7 +136,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("shows generic text when multiple messages were pinned", () => {
|
||||
const event = mockPinnedEvent(['message-1', 'message-2', 'message-3'], ['message-1']);
|
||||
const event = mockPinnedEvent(["message-1", "message-2", "message-3"], ["message-1"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -147,7 +146,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("shows generic text when multiple messages were unpinned", () => {
|
||||
const event = mockPinnedEvent(['message-3'], ['message-1', 'message-2', 'message-3']);
|
||||
const event = mockPinnedEvent(["message-3"], ["message-1", "message-2", "message-3"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -157,7 +156,7 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("shows generic text when one message was pinned, and another unpinned", () => {
|
||||
const event = mockPinnedEvent(['message-2'], ['message-1']);
|
||||
const event = mockPinnedEvent(["message-2"], ["message-1"]);
|
||||
const plainText = textForEvent(event);
|
||||
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
|
||||
|
||||
|
@ -174,19 +173,19 @@ describe('TextForEvent', () => {
|
|||
};
|
||||
|
||||
const userA = {
|
||||
id: '@a',
|
||||
name: 'Alice',
|
||||
rawDisplayName: 'Alice',
|
||||
id: "@a",
|
||||
name: "Alice",
|
||||
rawDisplayName: "Alice",
|
||||
};
|
||||
const userB = {
|
||||
id: '@b',
|
||||
name: 'Bob (@b)',
|
||||
rawDisplayName: 'Bob',
|
||||
id: "@b",
|
||||
name: "Bob (@b)",
|
||||
rawDisplayName: "Bob",
|
||||
};
|
||||
const userC = {
|
||||
id: '@c',
|
||||
name: 'Bob (@c)',
|
||||
rawDisplayName: 'Bob',
|
||||
id: "@c",
|
||||
name: "Bob (@c)",
|
||||
rawDisplayName: "Bob",
|
||||
};
|
||||
interface PowerEventProps {
|
||||
usersDefault?: number;
|
||||
|
@ -194,9 +193,7 @@ describe('TextForEvent', () => {
|
|||
users: Record<string, number>;
|
||||
prevUsers: Record<string, number>;
|
||||
}
|
||||
const mockPowerEvent = ({
|
||||
usersDefault, prevDefault, users, prevUsers,
|
||||
}: PowerEventProps): MatrixEvent => {
|
||||
const mockPowerEvent = ({ usersDefault, prevDefault, users, prevUsers }: PowerEventProps): MatrixEvent => {
|
||||
const mxEvent = new MatrixEvent({
|
||||
type: EventType.RoomPowerLevels,
|
||||
sender: userA.id,
|
||||
|
@ -218,16 +215,16 @@ describe('TextForEvent', () => {
|
|||
mockClient = createTestClient();
|
||||
MatrixClientPeg.get = () => mockClient;
|
||||
mockClient.getRoom.mockClear().mockReturnValue(mockRoom);
|
||||
mockRoom.getMember.mockClear().mockImplementation(
|
||||
userId => [userA, userB, userC].find(u => u.id === userId),
|
||||
);
|
||||
mockRoom.getMember
|
||||
.mockClear()
|
||||
.mockImplementation((userId) => [userA, userB, userC].find((u) => u.id === userId));
|
||||
(SettingsStore.getValue as jest.Mock).mockReturnValue(true);
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
(UserIdentifierCustomisations.getDisplayUserIdentifier as jest.Mock)
|
||||
.mockClear()
|
||||
.mockImplementation(userId => userId);
|
||||
.mockImplementation((userId) => userId);
|
||||
});
|
||||
|
||||
it("returns falsy when no users have changed power level", () => {
|
||||
|
@ -308,80 +305,112 @@ describe('TextForEvent', () => {
|
|||
[userC.id]: 101,
|
||||
},
|
||||
});
|
||||
const expectedText = "Alice changed the power level of Bob (@b) from Moderator to Admin,"
|
||||
+ " Bob (@c) from Custom (101) to Moderator.";
|
||||
const expectedText =
|
||||
"Alice changed the power level of Bob (@b) from Moderator to Admin," +
|
||||
" Bob (@c) from Custom (101) to Moderator.";
|
||||
expect(textForEvent(event)).toEqual(expectedText);
|
||||
});
|
||||
});
|
||||
|
||||
describe("textForCanonicalAliasEvent()", () => {
|
||||
const userA = {
|
||||
id: '@a',
|
||||
name: 'Alice',
|
||||
id: "@a",
|
||||
name: "Alice",
|
||||
};
|
||||
|
||||
interface AliasEventProps {
|
||||
alias?: string; prevAlias?: string; altAliases?: string[]; prevAltAliases?: string[];
|
||||
alias?: string;
|
||||
prevAlias?: string;
|
||||
altAliases?: string[];
|
||||
prevAltAliases?: string[];
|
||||
}
|
||||
const mockEvent = ({
|
||||
alias, prevAlias, altAliases, prevAltAliases,
|
||||
}: AliasEventProps): MatrixEvent => new MatrixEvent({
|
||||
type: EventType.RoomCanonicalAlias,
|
||||
sender: userA.id,
|
||||
state_key: "",
|
||||
content: {
|
||||
alias, alt_aliases: altAliases,
|
||||
},
|
||||
prev_content: {
|
||||
alias: prevAlias, alt_aliases: prevAltAliases,
|
||||
},
|
||||
});
|
||||
const mockEvent = ({ alias, prevAlias, altAliases, prevAltAliases }: AliasEventProps): MatrixEvent =>
|
||||
new MatrixEvent({
|
||||
type: EventType.RoomCanonicalAlias,
|
||||
sender: userA.id,
|
||||
state_key: "",
|
||||
content: {
|
||||
alias,
|
||||
alt_aliases: altAliases,
|
||||
},
|
||||
prev_content: {
|
||||
alias: prevAlias,
|
||||
alt_aliases: prevAltAliases,
|
||||
},
|
||||
});
|
||||
|
||||
type TestCase = [string, AliasEventProps & { result: string }];
|
||||
const testCases: TestCase[] = [
|
||||
["room alias didn't change", {
|
||||
result: '@a changed the addresses for this room.',
|
||||
}],
|
||||
["room alias changed", {
|
||||
alias: 'banana',
|
||||
prevAlias: 'apple',
|
||||
result: '@a set the main address for this room to banana.',
|
||||
}],
|
||||
["room alias was added", {
|
||||
alias: 'banana',
|
||||
result: '@a set the main address for this room to banana.',
|
||||
}],
|
||||
["room alias was removed", {
|
||||
prevAlias: 'apple',
|
||||
result: '@a removed the main address for this room.',
|
||||
}],
|
||||
["added an alt alias", {
|
||||
altAliases: ['canteloupe'],
|
||||
result: '@a added alternative address canteloupe for this room.',
|
||||
}],
|
||||
["added multiple alt aliases", {
|
||||
altAliases: ['canteloupe', 'date'],
|
||||
result: '@a added the alternative addresses canteloupe, date for this room.',
|
||||
}],
|
||||
["removed an alt alias", {
|
||||
altAliases: ['canteloupe'],
|
||||
prevAltAliases: ['canteloupe', 'date'],
|
||||
result: '@a removed alternative address date for this room.',
|
||||
}],
|
||||
["added and removed an alt aliases", {
|
||||
altAliases: ['canteloupe', 'elderberry'],
|
||||
prevAltAliases: ['canteloupe', 'date'],
|
||||
result: '@a changed the alternative addresses for this room.',
|
||||
}],
|
||||
["changed alias and added alt alias", {
|
||||
alias: 'banana',
|
||||
prevAlias: 'apple',
|
||||
altAliases: ['canteloupe'],
|
||||
result: '@a changed the main and alternative addresses for this room.',
|
||||
}],
|
||||
[
|
||||
"room alias didn't change",
|
||||
{
|
||||
result: "@a changed the addresses for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"room alias changed",
|
||||
{
|
||||
alias: "banana",
|
||||
prevAlias: "apple",
|
||||
result: "@a set the main address for this room to banana.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"room alias was added",
|
||||
{
|
||||
alias: "banana",
|
||||
result: "@a set the main address for this room to banana.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"room alias was removed",
|
||||
{
|
||||
prevAlias: "apple",
|
||||
result: "@a removed the main address for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"added an alt alias",
|
||||
{
|
||||
altAliases: ["canteloupe"],
|
||||
result: "@a added alternative address canteloupe for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"added multiple alt aliases",
|
||||
{
|
||||
altAliases: ["canteloupe", "date"],
|
||||
result: "@a added the alternative addresses canteloupe, date for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"removed an alt alias",
|
||||
{
|
||||
altAliases: ["canteloupe"],
|
||||
prevAltAliases: ["canteloupe", "date"],
|
||||
result: "@a removed alternative address date for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"added and removed an alt aliases",
|
||||
{
|
||||
altAliases: ["canteloupe", "elderberry"],
|
||||
prevAltAliases: ["canteloupe", "date"],
|
||||
result: "@a changed the alternative addresses for this room.",
|
||||
},
|
||||
],
|
||||
[
|
||||
"changed alias and added alt alias",
|
||||
{
|
||||
alias: "banana",
|
||||
prevAlias: "apple",
|
||||
altAliases: ["canteloupe"],
|
||||
result: "@a changed the main and alternative addresses for this room.",
|
||||
},
|
||||
],
|
||||
];
|
||||
|
||||
it.each(testCases)('returns correct message when %s', (_d, { result, ...eventProps }) => {
|
||||
it.each(testCases)("returns correct message when %s", (_d, { result, ...eventProps }) => {
|
||||
const event = mockEvent(eventProps);
|
||||
expect(textForEvent(event)).toEqual(result);
|
||||
});
|
||||
|
@ -392,18 +421,15 @@ describe('TextForEvent', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
pollEvent = new MatrixEvent({
|
||||
type: 'org.matrix.msc3381.poll.start',
|
||||
sender: '@a',
|
||||
type: "org.matrix.msc3381.poll.start",
|
||||
sender: "@a",
|
||||
content: {
|
||||
'org.matrix.msc3381.poll.start': {
|
||||
answers: [
|
||||
{ 'org.matrix.msc1767.text': 'option1' },
|
||||
{ 'org.matrix.msc1767.text': 'option2' },
|
||||
],
|
||||
"org.matrix.msc3381.poll.start": {
|
||||
answers: [{ "org.matrix.msc1767.text": "option1" }, { "org.matrix.msc1767.text": "option2" }],
|
||||
question: {
|
||||
'body': 'Test poll name',
|
||||
'msgtype': 'm.text',
|
||||
'org.matrix.msc1767.text': 'Test poll name',
|
||||
"body": "Test poll name",
|
||||
"msgtype": "m.text",
|
||||
"org.matrix.msc1767.text": "Test poll name",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -413,11 +439,11 @@ describe('TextForEvent', () => {
|
|||
it("returns correct message for redacted poll start", () => {
|
||||
pollEvent.makeRedacted(pollEvent);
|
||||
|
||||
expect(textForEvent(pollEvent)).toEqual('@a: Message deleted');
|
||||
expect(textForEvent(pollEvent)).toEqual("@a: Message deleted");
|
||||
});
|
||||
|
||||
it("returns correct message for normal poll start", () => {
|
||||
expect(textForEvent(pollEvent)).toEqual('@a has started a poll - ');
|
||||
expect(textForEvent(pollEvent)).toEqual("@a has started a poll - ");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -426,12 +452,12 @@ describe('TextForEvent', () => {
|
|||
|
||||
beforeEach(() => {
|
||||
messageEvent = new MatrixEvent({
|
||||
type: 'm.room.message',
|
||||
sender: '@a',
|
||||
type: "m.room.message",
|
||||
sender: "@a",
|
||||
content: {
|
||||
'body': 'test message',
|
||||
'msgtype': 'm.text',
|
||||
'org.matrix.msc1767.text': 'test message',
|
||||
"body": "test message",
|
||||
"msgtype": "m.text",
|
||||
"org.matrix.msc1767.text": "test message",
|
||||
},
|
||||
});
|
||||
});
|
||||
|
@ -439,11 +465,11 @@ describe('TextForEvent', () => {
|
|||
it("returns correct message for redacted message", () => {
|
||||
messageEvent.makeRedacted(messageEvent);
|
||||
|
||||
expect(textForEvent(messageEvent)).toEqual('@a: Message deleted');
|
||||
expect(textForEvent(messageEvent)).toEqual("@a: Message deleted");
|
||||
});
|
||||
|
||||
it("returns correct message for normal message", () => {
|
||||
expect(textForEvent(messageEvent)).toEqual('@a: test message');
|
||||
expect(textForEvent(messageEvent)).toEqual("@a: test message");
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -472,14 +498,14 @@ describe('TextForEvent', () => {
|
|||
});
|
||||
|
||||
it("returns correct message for call event when supported", () => {
|
||||
expect(textForEvent(callEvent)).toEqual('Video call started in Test room.');
|
||||
expect(textForEvent(callEvent)).toEqual("Video call started in Test room.");
|
||||
});
|
||||
|
||||
it("returns correct message for call event when supported", () => {
|
||||
mocked(mockClient).supportsVoip.mockReturnValue(false);
|
||||
|
||||
expect(textForEvent(callEvent)).toEqual(
|
||||
'Video call started in Test room. (not supported by this browser)',
|
||||
"Video call started in Test room. (not supported by this browser)",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue