@@ -9,10 +9,12 @@ namespace CommunityToolkit.Maui.UnitTests.Views;
9
9
public class PopupTests : BaseHandlerTest
10
10
{
11
11
const string resultWhenUserTapsOutsideOfPopup = "User Tapped Outside of Popup" ;
12
- readonly IPopup popup = new MockPopup ( ) ;
12
+ readonly MockPopup popup = new ( ) ;
13
+ readonly MockPopupHandler popupHandler ;
13
14
14
15
public PopupTests ( )
15
16
{
17
+ popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
16
18
Assert . IsType < IPopup > ( new MockPopup ( ) , exactMatch : false ) ;
17
19
}
18
20
@@ -49,15 +51,13 @@ public async Task ShowPopupAsync_CancellationTokenExpired()
49
51
50
52
app . Windows [ 0 ] . Page = page ;
51
53
52
- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
53
-
54
54
Assert . NotNull ( popup . Handler ) ;
55
55
Assert . NotNull ( page . Handler ) ;
56
56
57
57
// Ensure CancellationToken Has Expired
58
58
await Task . Delay ( 100 , CancellationToken . None ) ;
59
59
60
- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => page . ShowPopupAsync ( ( MockPopup ) popup , cts . Token ) ) ;
60
+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => page . ShowPopupAsync ( popup , cts . Token ) ) ;
61
61
}
62
62
63
63
[ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -80,15 +80,13 @@ public async Task ShowPopupAsync_CancellationTokenCancelled()
80
80
81
81
app . Windows [ 0 ] . Page = page ;
82
82
83
- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
84
-
85
83
Assert . NotNull ( popup . Handler ) ;
86
84
Assert . NotNull ( page . Handler ) ;
87
85
88
86
// Ensure CancellationToken Has Expired
89
87
await cts . CancelAsync ( ) ;
90
88
91
- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => page . ShowPopupAsync ( ( MockPopup ) popup , cts . Token ) ) ;
89
+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => page . ShowPopupAsync ( popup , cts . Token ) ) ;
92
90
}
93
91
94
92
[ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -111,15 +109,13 @@ public async Task CloseAsync_CancellationTokenExpired()
111
109
112
110
app . Windows [ 0 ] . Page = page ;
113
111
114
- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
115
-
116
112
Assert . NotNull ( popup . Handler ) ;
117
113
Assert . NotNull ( page . Handler ) ;
118
114
119
115
// Ensure CancellationToken Has Expired
120
116
await Task . Delay ( 100 , CancellationToken . None ) ;
121
117
122
- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => ( ( MockPopup ) popup ) . CloseAsync ( token : cts . Token ) ) ;
118
+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => popup . CloseAsync ( token : cts . Token ) ) ;
123
119
}
124
120
125
121
[ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -142,15 +138,13 @@ public async Task CloseAsync_CancellationTokenCancelled()
142
138
143
139
app . Windows [ 0 ] . Page = page ;
144
140
145
- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
146
-
147
141
Assert . NotNull ( popup . Handler ) ;
148
142
Assert . NotNull ( page . Handler ) ;
149
143
150
144
// Ensure CancellationToken Has Expired
151
145
await cts . CancelAsync ( ) ;
152
146
153
- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => ( ( MockPopup ) popup ) . CloseAsync ( token : cts . Token ) ) ;
147
+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => popup . CloseAsync ( token : cts . Token ) ) ;
154
148
}
155
149
156
150
[ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -171,17 +165,15 @@ public async Task OnOpenedMapperIsCalled()
171
165
172
166
app . Windows [ 0 ] . Page = page ;
173
167
174
- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
175
-
176
168
Assert . NotNull ( popup . Handler ) ;
177
169
Assert . NotNull ( page . Handler ) ;
178
170
179
- page . ShowPopup ( ( MockPopup ) popup ) ;
171
+ page . ShowPopup ( popup ) ;
180
172
Assert . Equal ( 1 , popupHandler . OnOpenedCount ) ;
181
- popup . OnDismissedByTappingOutsideOfPopup ( ) ;
173
+ await popup . OnDismissedByTappingOutsideOfPopup ( CancellationToken . None ) ;
182
174
183
- var popupTask = page . ShowPopupAsync ( ( MockPopup ) popup , CancellationToken . None ) ;
184
- popup . OnDismissedByTappingOutsideOfPopup ( ) ;
175
+ var popupTask = page . ShowPopupAsync ( popup , CancellationToken . None ) ;
176
+ await popup . OnDismissedByTappingOutsideOfPopup ( CancellationToken . None ) ;
185
177
186
178
await popupTask ;
187
179
@@ -202,7 +194,7 @@ public async Task PopupDismissedByTappingOutsideOfPopup()
202
194
}
203
195
} ;
204
196
205
- ( ( MockPopup ) popup ) . Closed += ( s , e ) =>
197
+ popup . Closed += ( s , e ) =>
206
198
{
207
199
Assert . Equal ( popup , s ) ;
208
200
popupClosedTCS . SetResult ( ( ( string ? ) e . Result , e . WasDismissedByTappingOutsideOfPopup ) ) ;
@@ -213,12 +205,10 @@ public async Task PopupDismissedByTappingOutsideOfPopup()
213
205
214
206
app . Windows [ 0 ] . Page = page ;
215
207
216
- CreateElementHandler < MockPopupHandler > ( popup ) ;
217
-
218
208
Assert . NotNull ( popup . Handler ) ;
219
209
Assert . NotNull ( page . Handler ) ;
220
210
221
- popup . OnDismissedByTappingOutsideOfPopup ( ) ;
211
+ await popup . OnDismissedByTappingOutsideOfPopup ( CancellationToken . None ) ;
222
212
223
213
var ( result , wasDismissedByTappingOutsideOfPopup ) = await popupClosedTCS . Task ;
224
214
@@ -247,20 +237,17 @@ public async Task OnDismissedWithResult()
247
237
248
238
app . Windows [ 0 ] . Page = page ;
249
239
250
- // Make sure that our popup will have a Handler
251
- CreateElementHandler < MockPopupHandler > ( popup ) ;
252
-
253
240
Assert . NotNull ( popup . Handler ) ;
254
241
Assert . NotNull ( page . Handler ) ;
255
242
256
- ( ( MockPopup ) popup ) . Closed += ( _ , e ) =>
243
+ popup . Closed += ( _ , e ) =>
257
244
{
258
245
result = e . Result ;
259
246
isPopupDismissed = true ;
260
- closedTCS . TrySetResult ( ) ;
247
+ closedTCS . SetResult ( ) ;
261
248
} ;
262
249
263
- ( ( MockPopup ) popup ) . Close ( new object ( ) ) ;
250
+ popup . Close ( new object ( ) ) ;
264
251
await closedTCS . Task ;
265
252
266
253
Assert . True ( isPopupDismissed ) ;
@@ -288,19 +275,16 @@ public async Task OnDismissedWithoutResult()
288
275
289
276
app . Windows [ 0 ] . Page = page ;
290
277
291
- // Make sure that our popup will have a Handler
292
- CreateElementHandler < MockPopupHandler > ( popup ) ;
293
-
294
278
Assert . NotNull ( popup . Handler ) ;
295
279
Assert . NotNull ( page . Handler ) ;
296
280
297
- ( ( MockPopup ) popup ) . Closed += ( _ , e ) =>
281
+ popup . Closed += ( _ , e ) =>
298
282
{
299
283
result = e . Result ;
300
284
isPopupDismissed = true ;
301
285
} ;
302
286
303
- await ( ( MockPopup ) popup ) . CloseAsync ( token : CancellationToken . None ) ;
287
+ await popup . CloseAsync ( token : CancellationToken . None ) ;
304
288
305
289
Assert . True ( isPopupDismissed ) ;
306
290
Assert . Null ( result ) ;
@@ -341,17 +325,14 @@ public async Task ShowPopup_IsLogicalChild()
341
325
342
326
app . Windows [ 0 ] . Page = page ;
343
327
344
- // Make sure that our popup will have a Handler
345
- CreateElementHandler < MockPopupHandler > ( popup ) ;
346
-
347
328
Assert . NotNull ( popup . Handler ) ;
348
329
Assert . NotNull ( page . Handler ) ;
349
330
350
331
Assert . Single ( page . LogicalChildrenInternal ) ;
351
- page . ShowPopup ( ( MockPopup ) popup ) ;
332
+ page . ShowPopup ( popup ) ;
352
333
Assert . Equal ( 2 , page . LogicalChildrenInternal . Count ) ;
353
334
354
- await ( ( MockPopup ) popup ) . CloseAsync ( token : CancellationToken . None ) ;
335
+ await popup . CloseAsync ( token : CancellationToken . None ) ;
355
336
Assert . Single ( page . LogicalChildrenInternal ) ;
356
337
}
357
338
@@ -361,15 +342,6 @@ public MockPopup()
361
342
{
362
343
ResultWhenUserTapsOutsideOfPopup = resultWhenUserTapsOutsideOfPopup ;
363
344
}
364
-
365
- protected override async Task OnClosed ( object ? result , bool wasDismissedByTappingOutsideOfPopup , CancellationToken token = default )
366
- {
367
- await Task . Delay ( 100 , token ) ;
368
-
369
- ( ( IPopup ) this ) . HandlerCompleteTCS . TrySetResult ( ) ;
370
-
371
- await base . OnClosed ( result , wasDismissedByTappingOutsideOfPopup , token ) ;
372
- }
373
345
}
374
346
375
347
sealed class PopupViewModel : INotifyPropertyChanged
0 commit comments