@@ -9,10 +9,12 @@ namespace CommunityToolkit.Maui.UnitTests.Views;
99public class PopupTests : BaseHandlerTest
1010{
1111 const string resultWhenUserTapsOutsideOfPopup = "User Tapped Outside of Popup" ;
12- readonly IPopup popup = new MockPopup ( ) ;
12+ readonly MockPopup popup = new ( ) ;
13+ readonly MockPopupHandler popupHandler ;
1314
1415 public PopupTests ( )
1516 {
17+ popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
1618 Assert . IsType < IPopup > ( new MockPopup ( ) , exactMatch : false ) ;
1719 }
1820
@@ -49,15 +51,13 @@ public async Task ShowPopupAsync_CancellationTokenExpired()
4951
5052 app . Windows [ 0 ] . Page = page ;
5153
52- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
53-
5454 Assert . NotNull ( popup . Handler ) ;
5555 Assert . NotNull ( page . Handler ) ;
5656
5757 // Ensure CancellationToken Has Expired
5858 await Task . Delay ( 100 , CancellationToken . None ) ;
5959
60- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => page . ShowPopupAsync ( ( MockPopup ) popup , cts . Token ) ) ;
60+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => page . ShowPopupAsync ( popup , cts . Token ) ) ;
6161 }
6262
6363 [ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -80,15 +80,13 @@ public async Task ShowPopupAsync_CancellationTokenCancelled()
8080
8181 app . Windows [ 0 ] . Page = page ;
8282
83- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
84-
8583 Assert . NotNull ( popup . Handler ) ;
8684 Assert . NotNull ( page . Handler ) ;
8785
8886 // Ensure CancellationToken Has Expired
8987 await cts . CancelAsync ( ) ;
9088
91- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => page . ShowPopupAsync ( ( MockPopup ) popup , cts . Token ) ) ;
89+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => page . ShowPopupAsync ( popup , cts . Token ) ) ;
9290 }
9391
9492 [ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -111,15 +109,13 @@ public async Task CloseAsync_CancellationTokenExpired()
111109
112110 app . Windows [ 0 ] . Page = page ;
113111
114- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
115-
116112 Assert . NotNull ( popup . Handler ) ;
117113 Assert . NotNull ( page . Handler ) ;
118114
119115 // Ensure CancellationToken Has Expired
120116 await Task . Delay ( 100 , CancellationToken . None ) ;
121117
122- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => ( ( MockPopup ) popup ) . CloseAsync ( token : cts . Token ) ) ;
118+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => popup . CloseAsync ( token : cts . Token ) ) ;
123119 }
124120
125121 [ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -142,15 +138,13 @@ public async Task CloseAsync_CancellationTokenCancelled()
142138
143139 app . Windows [ 0 ] . Page = page ;
144140
145- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
146-
147141 Assert . NotNull ( popup . Handler ) ;
148142 Assert . NotNull ( page . Handler ) ;
149143
150144 // Ensure CancellationToken Has Expired
151145 await cts . CancelAsync ( ) ;
152146
153- await Assert . ThrowsAsync < TaskCanceledException > ( ( ) => ( ( MockPopup ) popup ) . CloseAsync ( token : cts . Token ) ) ;
147+ await Assert . ThrowsAnyAsync < OperationCanceledException > ( ( ) => popup . CloseAsync ( token : cts . Token ) ) ;
154148 }
155149
156150 [ Fact ( Timeout = ( int ) TestDuration . Short ) ]
@@ -171,17 +165,15 @@ public async Task OnOpenedMapperIsCalled()
171165
172166 app . Windows [ 0 ] . Page = page ;
173167
174- var popupHandler = CreateElementHandler < MockPopupHandler > ( popup ) ;
175-
176168 Assert . NotNull ( popup . Handler ) ;
177169 Assert . NotNull ( page . Handler ) ;
178170
179- page . ShowPopup ( ( MockPopup ) popup ) ;
171+ page . ShowPopup ( popup ) ;
180172 Assert . Equal ( 1 , popupHandler . OnOpenedCount ) ;
181- popup . OnDismissedByTappingOutsideOfPopup ( ) ;
173+ await popup . OnDismissedByTappingOutsideOfPopup ( CancellationToken . None ) ;
182174
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 ) ;
185177
186178 await popupTask ;
187179
@@ -202,7 +194,7 @@ public async Task PopupDismissedByTappingOutsideOfPopup()
202194 }
203195 } ;
204196
205- ( ( MockPopup ) popup ) . Closed += ( s , e ) =>
197+ popup . Closed += ( s , e ) =>
206198 {
207199 Assert . Equal ( popup , s ) ;
208200 popupClosedTCS . SetResult ( ( ( string ? ) e . Result , e . WasDismissedByTappingOutsideOfPopup ) ) ;
@@ -213,12 +205,10 @@ public async Task PopupDismissedByTappingOutsideOfPopup()
213205
214206 app . Windows [ 0 ] . Page = page ;
215207
216- CreateElementHandler < MockPopupHandler > ( popup ) ;
217-
218208 Assert . NotNull ( popup . Handler ) ;
219209 Assert . NotNull ( page . Handler ) ;
220210
221- popup . OnDismissedByTappingOutsideOfPopup ( ) ;
211+ await popup . OnDismissedByTappingOutsideOfPopup ( CancellationToken . None ) ;
222212
223213 var ( result , wasDismissedByTappingOutsideOfPopup ) = await popupClosedTCS . Task ;
224214
@@ -247,20 +237,17 @@ public async Task OnDismissedWithResult()
247237
248238 app . Windows [ 0 ] . Page = page ;
249239
250- // Make sure that our popup will have a Handler
251- CreateElementHandler < MockPopupHandler > ( popup ) ;
252-
253240 Assert . NotNull ( popup . Handler ) ;
254241 Assert . NotNull ( page . Handler ) ;
255242
256- ( ( MockPopup ) popup ) . Closed += ( _ , e ) =>
243+ popup . Closed += ( _ , e ) =>
257244 {
258245 result = e . Result ;
259246 isPopupDismissed = true ;
260- closedTCS . TrySetResult ( ) ;
247+ closedTCS . SetResult ( ) ;
261248 } ;
262249
263- ( ( MockPopup ) popup ) . Close ( new object ( ) ) ;
250+ popup . Close ( new object ( ) ) ;
264251 await closedTCS . Task ;
265252
266253 Assert . True ( isPopupDismissed ) ;
@@ -288,19 +275,16 @@ public async Task OnDismissedWithoutResult()
288275
289276 app . Windows [ 0 ] . Page = page ;
290277
291- // Make sure that our popup will have a Handler
292- CreateElementHandler < MockPopupHandler > ( popup ) ;
293-
294278 Assert . NotNull ( popup . Handler ) ;
295279 Assert . NotNull ( page . Handler ) ;
296280
297- ( ( MockPopup ) popup ) . Closed += ( _ , e ) =>
281+ popup . Closed += ( _ , e ) =>
298282 {
299283 result = e . Result ;
300284 isPopupDismissed = true ;
301285 } ;
302286
303- await ( ( MockPopup ) popup ) . CloseAsync ( token : CancellationToken . None ) ;
287+ await popup . CloseAsync ( token : CancellationToken . None ) ;
304288
305289 Assert . True ( isPopupDismissed ) ;
306290 Assert . Null ( result ) ;
@@ -341,17 +325,14 @@ public async Task ShowPopup_IsLogicalChild()
341325
342326 app . Windows [ 0 ] . Page = page ;
343327
344- // Make sure that our popup will have a Handler
345- CreateElementHandler < MockPopupHandler > ( popup ) ;
346-
347328 Assert . NotNull ( popup . Handler ) ;
348329 Assert . NotNull ( page . Handler ) ;
349330
350331 Assert . Single ( page . LogicalChildrenInternal ) ;
351- page . ShowPopup ( ( MockPopup ) popup ) ;
332+ page . ShowPopup ( popup ) ;
352333 Assert . Equal ( 2 , page . LogicalChildrenInternal . Count ) ;
353334
354- await ( ( MockPopup ) popup ) . CloseAsync ( token : CancellationToken . None ) ;
335+ await popup . CloseAsync ( token : CancellationToken . None ) ;
355336 Assert . Single ( page . LogicalChildrenInternal ) ;
356337 }
357338
@@ -361,15 +342,6 @@ public MockPopup()
361342 {
362343 ResultWhenUserTapsOutsideOfPopup = resultWhenUserTapsOutsideOfPopup ;
363344 }
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- }
373345 }
374346
375347 sealed class PopupViewModel : INotifyPropertyChanged
0 commit comments