Apply prettier formatting

This commit is contained in:
Michael Weimann 2022-12-12 12:24:14 +01:00
parent 1cac306093
commit 526645c791
No known key found for this signature in database
GPG key ID: 53F535A266BB9584
1576 changed files with 65385 additions and 62478 deletions

View file

@ -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)",
);
});
});