Conform more code to strict null checking (#10169)
* Conform more code to strict null checking * delint * Iterate * delint * Fix bad test
This commit is contained in:
parent
5123d7e641
commit
e8b92b308b
85 changed files with 283 additions and 287 deletions
|
@ -79,7 +79,7 @@ describe("RoomView", () => {
|
|||
stores.client = cli;
|
||||
stores.rightPanelStore.useUnitTestClient(cli);
|
||||
|
||||
jest.spyOn(VoipUserMapper.sharedInstance(), "getVirtualRoomForRoom").mockResolvedValue(null);
|
||||
jest.spyOn(VoipUserMapper.sharedInstance(), "getVirtualRoomForRoom").mockResolvedValue(undefined);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
|
@ -175,7 +175,7 @@ describe("RoomView", () => {
|
|||
instance = await getRoomViewInstance();
|
||||
oldRoom = new Room("!old:example.com", cli, cli.getSafeUserId());
|
||||
rooms.set(oldRoom.roomId, oldRoom);
|
||||
jest.spyOn(room, "findPredecessor").mockReturnValue({ roomId: oldRoom.roomId, eventId: null });
|
||||
jest.spyOn(room, "findPredecessor").mockReturnValue({ roomId: oldRoom.roomId });
|
||||
});
|
||||
|
||||
it("and it has 0 unreads, getHiddenHighlightCount should return 0", async () => {
|
||||
|
|
|
@ -181,7 +181,7 @@ describe("Login", function () {
|
|||
const { container, rerender } = render(getRawComponent());
|
||||
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading…"));
|
||||
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton"));
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton")!);
|
||||
expect(platform.startSingleSignOn.mock.calls[0][0].baseUrl).toBe("https://matrix.org");
|
||||
|
||||
fetchMock.get("https://server2/_matrix/client/versions", {
|
||||
|
@ -190,7 +190,7 @@ describe("Login", function () {
|
|||
});
|
||||
rerender(getRawComponent("https://server2"));
|
||||
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton"));
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton")!);
|
||||
expect(platform.startSingleSignOn.mock.calls[1][0].baseUrl).toBe("https://server2");
|
||||
});
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ describe("Registration", function () {
|
|||
const { container, rerender } = render(getRawComponent());
|
||||
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading…"));
|
||||
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton"));
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton")!);
|
||||
expect(registerRequest.mock.instances[0].baseUrl).toBe("https://matrix.org");
|
||||
|
||||
fetchMock.get("https://server2/_matrix/client/versions", {
|
||||
|
@ -128,7 +128,7 @@ describe("Registration", function () {
|
|||
rerender(getRawComponent("https://server2"));
|
||||
await waitForElementToBeRemoved(() => screen.queryAllByLabelText("Loading…"));
|
||||
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton"));
|
||||
fireEvent.click(container.querySelector(".mx_SSOButton")!);
|
||||
expect(registerRequest.mock.instances[1].baseUrl).toBe("https://server2");
|
||||
});
|
||||
});
|
||||
|
|
|
@ -84,7 +84,7 @@ describe("<BeaconListItem />", () => {
|
|||
|
||||
const member = new RoomMember(roomId, aliceId);
|
||||
member.name = `Alice`;
|
||||
const room = mockClient.getRoom(roomId);
|
||||
const room = mockClient.getRoom(roomId)!;
|
||||
jest.spyOn(room, "getMember").mockReturnValue(member);
|
||||
|
||||
return beacons;
|
||||
|
@ -185,7 +185,7 @@ describe("<BeaconListItem />", () => {
|
|||
const { container } = getComponent({ beacon, onClick });
|
||||
|
||||
// click the beacon name
|
||||
fireEvent.click(container.querySelector(".mx_BeaconStatus_description"));
|
||||
fireEvent.click(container.querySelector(".mx_BeaconStatus_description")!);
|
||||
expect(onClick).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -47,7 +47,7 @@ describe("<ShareLatestLocation />", () => {
|
|||
const { container, asFragment } = getComponent();
|
||||
expect(asFragment()).toMatchSnapshot();
|
||||
|
||||
fireEvent.click(container.querySelector(".mx_CopyableText_copyButton"));
|
||||
fireEvent.click(container.querySelector(".mx_CopyableText_copyButton")!);
|
||||
await flushPromises();
|
||||
|
||||
expect(copyPlaintext).toHaveBeenCalledWith("51,42");
|
||||
|
|
|
@ -575,7 +575,7 @@ function createMenu(
|
|||
|
||||
return mount(
|
||||
<RoomContext.Provider value={context as IRoomState}>
|
||||
<MessageContextMenu chevronFace={null} mxEvent={mxEvent} onFinished={jest.fn()} {...props} />
|
||||
<MessageContextMenu mxEvent={mxEvent} onFinished={jest.fn()} {...props} />
|
||||
</RoomContext.Provider>,
|
||||
);
|
||||
}
|
||||
|
|
|
@ -32,7 +32,6 @@ describe("AccessSecretStorageDialog", () => {
|
|||
const defaultProps: ComponentProps<typeof AccessSecretStorageDialog> = {
|
||||
onFinished: jest.fn(),
|
||||
checkPrivateKey: jest.fn(),
|
||||
keyInfo: undefined,
|
||||
};
|
||||
|
||||
const renderComponent = (props = {}): void => {
|
||||
|
|
|
@ -66,11 +66,11 @@ describe("EventListSummary", function () {
|
|||
}
|
||||
const generateMembershipEvent = (
|
||||
eventId: string,
|
||||
{ senderId, userId, membership, prevMembership }: MembershipEventParams,
|
||||
{ senderId, userId, membership, prevMembership }: MembershipEventParams & { userId: string },
|
||||
): MatrixEvent => {
|
||||
const member = new RoomMember(roomId, userId);
|
||||
// Use localpart as display name;
|
||||
member.name = userId.match(/@([^:]*):/)[1];
|
||||
member.name = userId.match(/@([^:]*):/)![1];
|
||||
jest.spyOn(member, "getAvatarUrl").mockReturnValue("avatar.jpeg");
|
||||
jest.spyOn(member, "getMxcAvatarUrl").mockReturnValue("mxc://avatar.url/image.png");
|
||||
const e = mkMembership({
|
||||
|
@ -89,8 +89,8 @@ describe("EventListSummary", function () {
|
|||
};
|
||||
|
||||
// Generate mock MatrixEvents from the array of parameters
|
||||
const generateEvents = (parameters: MembershipEventParams[]) => {
|
||||
const res = [];
|
||||
const generateEvents = (parameters: Array<MembershipEventParams & { userId: string }>) => {
|
||||
const res: MatrixEvent[] = [];
|
||||
for (let i = 0; i < parameters.length; i++) {
|
||||
res.push(generateMembershipEvent(`event${i}`, parameters[i]));
|
||||
}
|
||||
|
@ -108,7 +108,9 @@ describe("EventListSummary", function () {
|
|||
events.forEach((e) => {
|
||||
e.userId = userId;
|
||||
});
|
||||
eventsForUsers = eventsForUsers.concat(generateEvents(events));
|
||||
eventsForUsers = eventsForUsers.concat(
|
||||
generateEvents(events as Array<MembershipEventParams & { userId: string }>),
|
||||
);
|
||||
}
|
||||
return eventsForUsers;
|
||||
};
|
||||
|
|
|
@ -29,7 +29,10 @@ describe("<LearnMore />", () => {
|
|||
};
|
||||
const getComponent = (props = {}) => <LearnMore {...defaultProps} {...props} />;
|
||||
|
||||
const modalSpy = jest.spyOn(Modal, "createDialog").mockReturnValue(undefined);
|
||||
const modalSpy = jest.spyOn(Modal, "createDialog").mockReturnValue({
|
||||
finished: new Promise(() => {}),
|
||||
close: jest.fn(),
|
||||
});
|
||||
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
|
|
|
@ -36,7 +36,7 @@ describe("<TooltipTarget />", () => {
|
|||
// clean up renderer tooltips
|
||||
const wrapper = document.querySelector(".mx_Tooltip_wrapper");
|
||||
while (wrapper?.firstChild) {
|
||||
wrapper.removeChild(wrapper.lastChild);
|
||||
wrapper.removeChild(wrapper.lastChild!);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -50,10 +50,10 @@ describe("MKeyVerificationConclusion", () => {
|
|||
}) => {
|
||||
class MockVerificationRequest extends EventEmitter {
|
||||
constructor(
|
||||
public readonly pending: boolean,
|
||||
public readonly cancelled: boolean,
|
||||
public readonly done: boolean,
|
||||
public readonly otherUserId: string,
|
||||
public readonly pending?: boolean,
|
||||
public readonly cancelled?: boolean,
|
||||
public readonly done?: boolean,
|
||||
public readonly otherUserId?: string,
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
|
|
@ -140,7 +140,9 @@ describe("MLocationBody", () => {
|
|||
});
|
||||
|
||||
it("opens map dialog on click", () => {
|
||||
const modalSpy = jest.spyOn(Modal, "createDialog").mockReturnValue(undefined);
|
||||
const modalSpy = jest
|
||||
.spyOn(Modal, "createDialog")
|
||||
.mockReturnValue({ finished: new Promise(() => {}), close: jest.fn() });
|
||||
const component = getComponent();
|
||||
|
||||
act(() => {
|
||||
|
|
|
@ -63,7 +63,7 @@ describe("MessageEvent", () => {
|
|||
event = mkEvent({
|
||||
event: true,
|
||||
type: VoiceBroadcastInfoEventType,
|
||||
user: client.getUserId(),
|
||||
user: client.getUserId()!,
|
||||
room: room.roomId,
|
||||
content: {
|
||||
state: VoiceBroadcastInfoState.Started,
|
||||
|
|
|
@ -108,7 +108,7 @@ describe("<PinnedMessagesCard />", () => {
|
|||
const room = pins.props().room;
|
||||
const pinListener = mocked(room.currentState).on.mock.calls.find(
|
||||
([eventName, listener]) => eventName === RoomStateEvent.Events,
|
||||
)[1];
|
||||
)![1];
|
||||
|
||||
await act(async () => {
|
||||
// Emit the update
|
||||
|
|
|
@ -37,7 +37,7 @@ function generateRoomId() {
|
|||
|
||||
describe("MemberList", () => {
|
||||
function createRoom(opts = {}) {
|
||||
const room = new Room(generateRoomId(), null, client.getUserId());
|
||||
const room = new Room(generateRoomId(), client, client.getUserId()!);
|
||||
if (opts) {
|
||||
Object.assign(room, opts);
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@ describe("MessageComposer", () => {
|
|||
replyToEvent = mkEvent({
|
||||
event: true,
|
||||
type: EventType.RoomMessage,
|
||||
user: cli.getUserId(),
|
||||
user: cli.getUserId()!,
|
||||
content: {},
|
||||
});
|
||||
|
||||
|
|
|
@ -377,7 +377,7 @@ describe("RoomHeader (React Testing Library)", () => {
|
|||
content,
|
||||
});
|
||||
room.addLiveEvents([event]);
|
||||
return { event_id: event.getId() };
|
||||
return { event_id: event.getId()! };
|
||||
});
|
||||
|
||||
alice = mkRoomMember(room.roomId, "@alice:example.org");
|
||||
|
|
|
@ -21,7 +21,7 @@ import { Key } from "../../../../src/Keyboard";
|
|||
import { mockPlatformPeg, unmockPlatformPeg } from "../../../test-utils/platform";
|
||||
import { KeyboardKey, KeyboardShortcut } from "../../../../src/components/views/settings/KeyboardShortcut";
|
||||
|
||||
const renderKeyboardShortcut = (Component: React.FunctionComponentFactory<any>, props: Record<string, any>) => {
|
||||
const renderKeyboardShortcut = (Component: React.FunctionComponent<any>, props: Record<string, any>) => {
|
||||
return render(<Component {...props} />).container;
|
||||
};
|
||||
|
||||
|
|
|
@ -30,7 +30,6 @@ describe("<DeviceDetails />", () => {
|
|||
};
|
||||
const defaultProps: ComponentProps<typeof DeviceDetails> = {
|
||||
device: baseDevice,
|
||||
pusher: null,
|
||||
isSigningOut: false,
|
||||
onSignOutDevice: jest.fn(),
|
||||
saveDeviceName: jest.fn(),
|
||||
|
|
|
@ -53,7 +53,7 @@ describe("<SelectableDeviceTile />", () => {
|
|||
const { container } = render(getComponent({ onSelect }));
|
||||
|
||||
act(() => {
|
||||
fireEvent.click(container.querySelector(`#device-tile-checkbox-${device.device_id}`));
|
||||
fireEvent.click(container.querySelector(`#device-tile-checkbox-${device.device_id}`)!);
|
||||
});
|
||||
|
||||
expect(onSelect).toHaveBeenCalled();
|
||||
|
|
|
@ -92,7 +92,7 @@ describe("deleteDevices()", () => {
|
|||
// opened modal
|
||||
expect(modalSpy).toHaveBeenCalled();
|
||||
|
||||
const [, { title, authData, aestheticsForStagePhases }] = modalSpy.mock.calls[0];
|
||||
const { title, authData, aestheticsForStagePhases } = modalSpy.mock.calls[0][1]!;
|
||||
|
||||
// modal opened as expected
|
||||
expect(title).toEqual("Authentication");
|
||||
|
|
|
@ -21,7 +21,7 @@ import { DeviceInfo } from "matrix-js-sdk/src/crypto/deviceinfo";
|
|||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { DeviceTrustLevel } from "matrix-js-sdk/src/crypto/CrossSigning";
|
||||
import { VerificationRequest } from "matrix-js-sdk/src/crypto/verification/request/VerificationRequest";
|
||||
import { sleep } from "matrix-js-sdk/src/utils";
|
||||
import { defer, sleep } from "matrix-js-sdk/src/utils";
|
||||
import {
|
||||
ClientEvent,
|
||||
IMyDevice,
|
||||
|
@ -927,12 +927,9 @@ describe("<SessionManagerTab />", () => {
|
|||
// get a handle for resolving the delete call
|
||||
// because promise flushing after the confirm modal is resolving this too
|
||||
// and we want to test the loading state here
|
||||
let resolveDeleteRequest: (v?: IAuthData) => void;
|
||||
const resolveDeleteRequest = defer<IAuthData>();
|
||||
mockClient.deleteMultipleDevices.mockImplementation(() => {
|
||||
const promise = new Promise<IAuthData>((resolve) => {
|
||||
resolveDeleteRequest = resolve;
|
||||
});
|
||||
return promise;
|
||||
return resolveDeleteRequest.promise;
|
||||
});
|
||||
|
||||
const { getByTestId } = render(getComponent());
|
||||
|
@ -972,7 +969,7 @@ describe("<SessionManagerTab />", () => {
|
|||
undefined,
|
||||
);
|
||||
|
||||
resolveDeleteRequest?.();
|
||||
resolveDeleteRequest.resolve({});
|
||||
});
|
||||
|
||||
it("signs out of all other devices from other sessions context menu", async () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue