@@ -15,7 +15,7 @@ limitations under the License.
15
15
*/
16
16
17
17
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 " ;
19
19
import { ReactElement } from "react" ;
20
20
import { Mocked , mocked } from "jest-mock" ;
21
21
@@ -46,43 +46,6 @@ function mockPinnedEvent(pinnedMessageIds?: string[], prevPinnedMessageIds?: str
46
46
} ) ;
47
47
}
48
48
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
-
86
49
describe ( "TextForEvent" , ( ) => {
87
50
describe ( "getSenderName()" , ( ) => {
88
51
it ( "Prefers sender.name" , ( ) => {
@@ -105,71 +68,71 @@ describe("TextForEvent", () => {
105
68
it ( "mentions message when a single message was pinned, with no previously pinned messages" , ( ) => {
106
69
const event = mockPinnedEvent ( [ "message-1" ] ) ;
107
70
const plainText = textForEvent ( event ) ;
108
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
71
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
109
72
110
73
const expectedText = "@foo:example.com pinned a message to this room. See all pinned messages." ;
111
74
expect ( plainText ) . toBe ( expectedText ) ;
112
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
75
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
113
76
} ) ;
114
77
115
78
it ( "mentions message when a single message was pinned, with multiple previously pinned messages" , ( ) => {
116
79
const event = mockPinnedEvent ( [ "message-1" , "message-2" , "message-3" ] , [ "message-1" , "message-2" ] ) ;
117
80
const plainText = textForEvent ( event ) ;
118
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
81
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
119
82
120
83
const expectedText = "@foo:example.com pinned a message to this room. See all pinned messages." ;
121
84
expect ( plainText ) . toBe ( expectedText ) ;
122
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
85
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
123
86
} ) ;
124
87
125
88
it ( "mentions message when a single message was unpinned, with a single message previously pinned" , ( ) => {
126
89
const event = mockPinnedEvent ( [ ] , [ "message-1" ] ) ;
127
90
const plainText = textForEvent ( event ) ;
128
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
91
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
129
92
130
93
const expectedText = "@foo:example.com unpinned a message from this room. See all pinned messages." ;
131
94
expect ( plainText ) . toBe ( expectedText ) ;
132
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
95
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
133
96
} ) ;
134
97
135
98
it ( "mentions message when a single message was unpinned, with multiple previously pinned messages" , ( ) => {
136
99
const event = mockPinnedEvent ( [ "message-2" ] , [ "message-1" , "message-2" ] ) ;
137
100
const plainText = textForEvent ( event ) ;
138
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
101
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
139
102
140
103
const expectedText = "@foo:example.com unpinned a message from this room. See all pinned messages." ;
141
104
expect ( plainText ) . toBe ( expectedText ) ;
142
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
105
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
143
106
} ) ;
144
107
145
108
it ( "shows generic text when multiple messages were pinned" , ( ) => {
146
109
const event = mockPinnedEvent ( [ "message-1" , "message-2" , "message-3" ] , [ "message-1" ] ) ;
147
110
const plainText = textForEvent ( event ) ;
148
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
111
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
149
112
150
113
const expectedText = "@foo:example.com changed the pinned messages for the room." ;
151
114
expect ( plainText ) . toBe ( expectedText ) ;
152
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
115
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
153
116
} ) ;
154
117
155
118
it ( "shows generic text when multiple messages were unpinned" , ( ) => {
156
119
const event = mockPinnedEvent ( [ "message-3" ] , [ "message-1" , "message-2" , "message-3" ] ) ;
157
120
const plainText = textForEvent ( event ) ;
158
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
121
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
159
122
160
123
const expectedText = "@foo:example.com changed the pinned messages for the room." ;
161
124
expect ( plainText ) . toBe ( expectedText ) ;
162
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
125
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
163
126
} ) ;
164
127
165
128
it ( "shows generic text when one message was pinned, and another unpinned" , ( ) => {
166
129
const event = mockPinnedEvent ( [ "message-2" ] , [ "message-1" ] ) ;
167
130
const plainText = textForEvent ( event ) ;
168
- const component = TestRenderer . create ( textForEvent ( event , true ) as ReactElement ) ;
131
+ const component = render ( textForEvent ( event , true ) as ReactElement ) ;
169
132
170
133
const expectedText = "@foo:example.com changed the pinned messages for the room." ;
171
134
expect ( plainText ) . toBe ( expectedText ) ;
172
- expect ( renderComponent ( component ) ) . toBe ( expectedText ) ;
135
+ expect ( component . container ) . toHaveTextContent ( expectedText ) ;
173
136
} ) ;
174
137
} ) ;
175
138
0 commit comments