Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit c29e5f1

Browse files
authored
Update usages of test utilities preferring RTL (#10203)
1 parent 17bbd4e commit c29e5f1

37 files changed

+337
-420
lines changed

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@
167167
"@types/react": "17.0.49",
168168
"@types/react-beautiful-dnd": "^13.0.0",
169169
"@types/react-dom": "17.0.17",
170-
"@types/react-test-renderer": "^17.0.1",
171170
"@types/react-transition-group": "^4.4.0",
172171
"@types/sanitize-html": "2.8.0",
173172
"@types/tar-js": "^0.3.2",
@@ -212,7 +211,6 @@
212211
"postcss-scss": "^4.0.4",
213212
"prettier": "2.8.0",
214213
"raw-loader": "^4.0.2",
215-
"react-test-renderer": "^17.0.2",
216214
"rimraf": "^3.0.2",
217215
"stylelint": "^14.9.1",
218216
"stylelint-config-prettier": "^9.0.4",

src/components/views/room_settings/AliasSettings.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ export default class AliasSettings extends React.Component<IProps, IState> {
399399
return (
400400
<div className="mx_AliasSettings">
401401
<SettingsFieldset
402-
data-test-id="published-address-fieldset"
402+
data-testid="published-address-fieldset"
403403
legend={_t("Published Addresses")}
404404
description={
405405
<>
@@ -450,7 +450,7 @@ export default class AliasSettings extends React.Component<IProps, IState> {
450450
/>
451451
</SettingsFieldset>
452452
<SettingsFieldset
453-
data-test-id="local-address-fieldset"
453+
data-testid="local-address-fieldset"
454454
legend={_t("Local Addresses")}
455455
description={
456456
isSpaceRoom

src/components/views/spaces/SpaceSettingsVisibilityTab.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ const SpaceSettingsVisibilityTab: React.FC<IProps> = ({ matrixClient: cli, space
9393
advancedSection = (
9494
<div>
9595
<AccessibleButton
96-
data-test-id="toggle-guest-access-btn"
96+
data-testid="toggle-guest-access-btn"
9797
onClick={toggleAdvancedSection}
9898
kind="link"
9999
className="mx_SettingsTab_showAdvanced"
@@ -141,13 +141,13 @@ const SpaceSettingsVisibilityTab: React.FC<IProps> = ({ matrixClient: cli, space
141141
<div className="mx_SettingsTab_heading">{_t("Visibility")}</div>
142142

143143
{error && (
144-
<div data-test-id="space-settings-error" className="mx_SpaceRoomView_errorText">
144+
<div data-testid="space-settings-error" className="mx_SpaceRoomView_errorText">
145145
{error}
146146
</div>
147147
)}
148148

149149
<SettingsFieldset
150-
data-test-id="access-fieldset"
150+
data-testid="access-fieldset"
151151
legend={_t("Access")}
152152
description={_t("Decide who can view and join %(spaceName)s.", { spaceName: space.name })}
153153
>

test/TextForEvent-test.ts

Lines changed: 15 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ limitations under the License.
1515
*/
1616

1717
import { EventType, MatrixClient, MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
18-
import TestRenderer from "react-test-renderer";
18+
import { render } from "@testing-library/react";
1919
import { ReactElement } from "react";
2020
import { Mocked, mocked } from "jest-mock";
2121

@@ -46,43 +46,6 @@ function mockPinnedEvent(pinnedMessageIds?: string[], prevPinnedMessageIds?: str
4646
});
4747
}
4848

49-
// Helper function that renders a component to a plain text string.
50-
// Once snapshots are introduced in tests, this function will no longer be necessary,
51-
// and should be replaced with snapshots.
52-
function renderComponent(component: TestRenderer.ReactTestRenderer): string {
53-
const serializeObject = (
54-
object:
55-
| TestRenderer.ReactTestRendererJSON
56-
| TestRenderer.ReactTestRendererJSON[]
57-
| TestRenderer.ReactTestRendererNode
58-
| TestRenderer.ReactTestRendererNode[],
59-
): string => {
60-
if (typeof object === "string") {
61-
return object === " " ? "" : object;
62-
}
63-
64-
if (Array.isArray(object) && object.length === 1 && typeof object[0] === "string") {
65-
return object[0];
66-
}
67-
68-
if (!Array.isArray(object) && object["type"] !== undefined && typeof object["children"] !== undefined) {
69-
return serializeObject(object.children!);
70-
}
71-
72-
if (!Array.isArray(object)) {
73-
return "";
74-
}
75-
76-
return object
77-
.map((child) => {
78-
return serializeObject(child);
79-
})
80-
.join("");
81-
};
82-
83-
return serializeObject(component.toJSON()!);
84-
}
85-
8649
describe("TextForEvent", () => {
8750
describe("getSenderName()", () => {
8851
it("Prefers sender.name", () => {
@@ -105,71 +68,71 @@ describe("TextForEvent", () => {
10568
it("mentions message when a single message was pinned, with no previously pinned messages", () => {
10669
const event = mockPinnedEvent(["message-1"]);
10770
const plainText = textForEvent(event);
108-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
71+
const component = render(textForEvent(event, true) as ReactElement);
10972

11073
const expectedText = "@foo:example.com pinned a message to this room. See all pinned messages.";
11174
expect(plainText).toBe(expectedText);
112-
expect(renderComponent(component)).toBe(expectedText);
75+
expect(component.container).toHaveTextContent(expectedText);
11376
});
11477

11578
it("mentions message when a single message was pinned, with multiple previously pinned messages", () => {
11679
const event = mockPinnedEvent(["message-1", "message-2", "message-3"], ["message-1", "message-2"]);
11780
const plainText = textForEvent(event);
118-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
81+
const component = render(textForEvent(event, true) as ReactElement);
11982

12083
const expectedText = "@foo:example.com pinned a message to this room. See all pinned messages.";
12184
expect(plainText).toBe(expectedText);
122-
expect(renderComponent(component)).toBe(expectedText);
85+
expect(component.container).toHaveTextContent(expectedText);
12386
});
12487

12588
it("mentions message when a single message was unpinned, with a single message previously pinned", () => {
12689
const event = mockPinnedEvent([], ["message-1"]);
12790
const plainText = textForEvent(event);
128-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
91+
const component = render(textForEvent(event, true) as ReactElement);
12992

13093
const expectedText = "@foo:example.com unpinned a message from this room. See all pinned messages.";
13194
expect(plainText).toBe(expectedText);
132-
expect(renderComponent(component)).toBe(expectedText);
95+
expect(component.container).toHaveTextContent(expectedText);
13396
});
13497

13598
it("mentions message when a single message was unpinned, with multiple previously pinned messages", () => {
13699
const event = mockPinnedEvent(["message-2"], ["message-1", "message-2"]);
137100
const plainText = textForEvent(event);
138-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
101+
const component = render(textForEvent(event, true) as ReactElement);
139102

140103
const expectedText = "@foo:example.com unpinned a message from this room. See all pinned messages.";
141104
expect(plainText).toBe(expectedText);
142-
expect(renderComponent(component)).toBe(expectedText);
105+
expect(component.container).toHaveTextContent(expectedText);
143106
});
144107

145108
it("shows generic text when multiple messages were pinned", () => {
146109
const event = mockPinnedEvent(["message-1", "message-2", "message-3"], ["message-1"]);
147110
const plainText = textForEvent(event);
148-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
111+
const component = render(textForEvent(event, true) as ReactElement);
149112

150113
const expectedText = "@foo:example.com changed the pinned messages for the room.";
151114
expect(plainText).toBe(expectedText);
152-
expect(renderComponent(component)).toBe(expectedText);
115+
expect(component.container).toHaveTextContent(expectedText);
153116
});
154117

155118
it("shows generic text when multiple messages were unpinned", () => {
156119
const event = mockPinnedEvent(["message-3"], ["message-1", "message-2", "message-3"]);
157120
const plainText = textForEvent(event);
158-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
121+
const component = render(textForEvent(event, true) as ReactElement);
159122

160123
const expectedText = "@foo:example.com changed the pinned messages for the room.";
161124
expect(plainText).toBe(expectedText);
162-
expect(renderComponent(component)).toBe(expectedText);
125+
expect(component.container).toHaveTextContent(expectedText);
163126
});
164127

165128
it("shows generic text when one message was pinned, and another unpinned", () => {
166129
const event = mockPinnedEvent(["message-2"], ["message-1"]);
167130
const plainText = textForEvent(event);
168-
const component = TestRenderer.create(textForEvent(event, true) as ReactElement);
131+
const component = render(textForEvent(event, true) as ReactElement);
169132

170133
const expectedText = "@foo:example.com changed the pinned messages for the room.";
171134
expect(plainText).toBe(expectedText);
172-
expect(renderComponent(component)).toBe(expectedText);
135+
expect(component.container).toHaveTextContent(expectedText);
173136
});
174137
});
175138

test/components/structures/MessagePanel-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ limitations under the License.
1616
*/
1717

1818
import React from "react";
19-
import ReactDOM from "react-dom";
2019
import { EventEmitter } from "events";
2120
import { MatrixEvent, Room, RoomMember } from "matrix-js-sdk/src/matrix";
2221
import FakeTimers from "@sinonjs/fake-timers";
@@ -358,7 +357,7 @@ describe("MessagePanel", function () {
358357
const [rm] = container.getElementsByClassName("mx_RoomView_myReadMarker_container");
359358

360359
// it should follow the <li> which wraps the event tile for event 4
361-
const eventContainer = ReactDOM.findDOMNode(tiles[4]);
360+
const eventContainer = tiles[4];
362361
expect(rm.previousSibling).toEqual(eventContainer);
363362
});
364363

test/components/structures/TabbedView-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ limitations under the License.
1515
*/
1616

1717
import React from "react";
18-
import { fireEvent, render } from "@testing-library/react";
19-
import { act } from "react-dom/test-utils";
18+
import { act, fireEvent, render } from "@testing-library/react";
2019

2120
import TabbedView, { Tab, TabLocation } from "../../../src/components/structures/TabbedView";
2221

test/components/structures/ThreadView-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import { getByTestId, render, RenderResult, waitFor } from "@testing-library/react";
17+
import { act, getByTestId, render, RenderResult, waitFor } from "@testing-library/react";
1818
import userEvent from "@testing-library/user-event";
1919
import { mocked } from "jest-mock";
2020
import { MsgType, RelationType } from "matrix-js-sdk/src/@types/event";
@@ -23,7 +23,6 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event";
2323
import { Room } from "matrix-js-sdk/src/models/room";
2424
import { THREAD_RELATION_TYPE } from "matrix-js-sdk/src/models/thread";
2525
import React, { useState } from "react";
26-
import { act } from "react-dom/test-utils";
2726

2827
import ThreadView from "../../../src/components/structures/ThreadView";
2928
import MatrixClientContext from "../../../src/contexts/MatrixClientContext";

test/components/views/beacon/BeaconListItem-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@ limitations under the License.
1515
*/
1616

1717
import React from "react";
18-
import { fireEvent, render } from "@testing-library/react";
18+
import { act, fireEvent, render } from "@testing-library/react";
1919
import { Beacon, RoomMember, MatrixEvent } from "matrix-js-sdk/src/matrix";
2020
import { LocationAssetType } from "matrix-js-sdk/src/@types/location";
21-
import { act } from "react-dom/test-utils";
2221

2322
import BeaconListItem from "../../../../src/components/views/beacon/BeaconListItem";
2423
import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";

test/components/views/beacon/BeaconMarker-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ limitations under the License.
1515
*/
1616

1717
import React from "react";
18-
import { render, screen } from "@testing-library/react";
18+
import { act, render, screen } from "@testing-library/react";
1919
import * as maplibregl from "maplibre-gl";
20-
import { act } from "react-dom/test-utils";
2120
import { Beacon, Room, RoomMember, MatrixEvent, getBeaconInfoIdentifier } from "matrix-js-sdk/src/matrix";
2221

2322
import BeaconMarker from "../../../../src/components/views/beacon/BeaconMarker";

test/components/views/beacon/DialogSidebar-test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ limitations under the License.
1515
*/
1616

1717
import React, { ComponentProps } from "react";
18-
import { fireEvent, render } from "@testing-library/react";
19-
import { act } from "react-dom/test-utils";
18+
import { act, fireEvent, render } from "@testing-library/react";
2019

2120
import DialogSidebar from "../../../../src/components/views/beacon/DialogSidebar";
2221
import MatrixClientContext from "../../../../src/contexts/MatrixClientContext";

0 commit comments

Comments
 (0)