@@ -18,6 +18,28 @@ public void IServiceCollection_VerifyTransientPopup()
18
18
var services = MauiApp . CreateBuilder ( ) . Services ;
19
19
const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Transient ;
20
20
21
+ // Act
22
+ services . AddTransientPopup < MockPopup > ( ) ;
23
+ var serviceProvider = services . BuildServiceProvider ( ) ;
24
+
25
+ // Assert
26
+ var mockPopupServiceDescriptor = services . Single ( s => s . ServiceType == typeof ( MockPopup ) && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
27
+
28
+ Assert . NotNull ( mockPopupServiceDescriptor ) ;
29
+ Assert . Equal ( expectedServiceLifetime , mockPopupServiceDescriptor . Lifetime ) ;
30
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ServiceType ) ;
31
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ImplementationType ) ;
32
+
33
+ Assert . IsType < MockPopup > ( serviceProvider . GetRequiredService < MockPopup > ( ) ) ;
34
+ }
35
+
36
+ [ Fact ]
37
+ public void IServiceCollection_VerifyTransientPopupWithViewModel ( )
38
+ {
39
+ // Arrange
40
+ var services = MauiApp . CreateBuilder ( ) . Services ;
41
+ const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Transient ;
42
+
21
43
// Act
22
44
services . AddTransientPopup < MockSelfClosingPopup , MockPageViewModel > ( ) ;
23
45
var serviceProvider = services . BuildServiceProvider ( ) ;
@@ -150,24 +172,46 @@ public void IServiceCollection_VerifySingletonPopup()
150
172
const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Singleton ;
151
173
var services = MauiApp . CreateBuilder ( ) . Services ;
152
174
175
+ // Act
176
+ services . AddSingletonPopup < MockPopup > ( ) ;
177
+ var serviceProvider = services . BuildServiceProvider ( ) ;
178
+
179
+ // Assert
180
+ var mockPopupServiceDescriptor = services . Single ( s => s . ServiceType == typeof ( MockPopup ) && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
181
+
182
+ Assert . NotNull ( mockPopupServiceDescriptor ) ;
183
+ Assert . Equal ( expectedServiceLifetime , mockPopupServiceDescriptor . Lifetime ) ;
184
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ServiceType ) ;
185
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ImplementationType ) ;
186
+
187
+ Assert . IsType < MockPopup > ( serviceProvider . GetRequiredService < MockPopup > ( ) ) ;
188
+ }
189
+
190
+ [ Fact ]
191
+ public void IServiceCollection_VerifySingletonPopupWithViewModel ( )
192
+ {
193
+ // Arrange
194
+ const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Singleton ;
195
+ var services = MauiApp . CreateBuilder ( ) . Services ;
196
+
153
197
// Act
154
198
services . AddSingletonPopup < MockSelfClosingPopup , MockPageViewModel > ( ) ;
155
199
var serviceProvider = services . BuildServiceProvider ( ) ;
156
200
157
201
// Assert
158
- var mockPpopupServiceDescriptor = services . Single ( s => s . ServiceType == mockPopupType && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
202
+ var mockPopupServiceDescriptor = services . Single ( s => s . ServiceType == mockPopupType && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
159
203
var mockViewModelServiceDescriptor = services . Single ( s => s . ServiceType == mockViewModelType && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
160
204
161
- Assert . NotNull ( mockPpopupServiceDescriptor ) ;
205
+ Assert . NotNull ( mockPopupServiceDescriptor ) ;
162
206
Assert . NotNull ( mockViewModelServiceDescriptor ) ;
163
207
164
- Assert . Equal ( expectedServiceLifetime , mockPpopupServiceDescriptor . Lifetime ) ;
208
+ Assert . Equal ( expectedServiceLifetime , mockPopupServiceDescriptor . Lifetime ) ;
165
209
Assert . Equal ( expectedServiceLifetime , mockViewModelServiceDescriptor . Lifetime ) ;
166
210
167
- Assert . Equal ( mockPopupType , mockPpopupServiceDescriptor . ServiceType ) ;
211
+ Assert . Equal ( mockPopupType , mockPopupServiceDescriptor . ServiceType ) ;
168
212
Assert . Equal ( mockViewModelType , mockViewModelServiceDescriptor . ServiceType ) ;
169
213
170
- Assert . Equal ( mockPopupType , mockPpopupServiceDescriptor . ImplementationType ) ;
214
+ Assert . Equal ( mockPopupType , mockPopupServiceDescriptor . ImplementationType ) ;
171
215
Assert . Equal ( mockViewModelType , mockViewModelServiceDescriptor . ImplementationType ) ;
172
216
173
217
Assert . IsType < MockSelfClosingPopup > ( serviceProvider . GetRequiredService < MockSelfClosingPopup > ( ) ) ;
@@ -283,6 +327,28 @@ public void IServiceCollection_VerifyScopedPopup()
283
327
const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Scoped ;
284
328
var services = MauiApp . CreateBuilder ( ) . Services ;
285
329
330
+ // Act
331
+ services . AddScopedPopup < MockPopup > ( ) ;
332
+ var serviceProvider = services . BuildServiceProvider ( ) ;
333
+
334
+ // Assert
335
+ var mockPopupServiceDescriptor = services . Single ( s => s . ServiceType == typeof ( MockPopup ) && s . Lifetime . Equals ( expectedServiceLifetime ) ) ;
336
+
337
+ Assert . NotNull ( mockPopupServiceDescriptor ) ;
338
+ Assert . Equal ( expectedServiceLifetime , mockPopupServiceDescriptor . Lifetime ) ;
339
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ServiceType ) ;
340
+ Assert . Equal ( typeof ( MockPopup ) , mockPopupServiceDescriptor . ImplementationType ) ;
341
+
342
+ Assert . IsType < MockPopup > ( serviceProvider . GetRequiredService < MockPopup > ( ) ) ;
343
+ }
344
+
345
+ [ Fact ]
346
+ public void IServiceCollection_VerifyScopedPopupWithViewModel ( )
347
+ {
348
+ // Arrange
349
+ const ServiceLifetime expectedServiceLifetime = ServiceLifetime . Scoped ;
350
+ var services = MauiApp . CreateBuilder ( ) . Services ;
351
+
286
352
// Act
287
353
services . AddScopedPopup < MockSelfClosingPopup , MockPageViewModel > ( ) ;
288
354
var serviceProvider = services . BuildServiceProvider ( ) ;
@@ -414,4 +480,6 @@ protected override void Dispose(bool isDisposing)
414
480
Routing . Clear ( ) ;
415
481
base . Dispose ( isDisposing ) ;
416
482
}
483
+
484
+ sealed class MockPopup : View ;
417
485
}
0 commit comments