Skip to content

Commit edb12ef

Browse files
Add Unit Tests
1 parent 58e134f commit edb12ef

File tree

1 file changed

+73
-5
lines changed

1 file changed

+73
-5
lines changed

src/CommunityToolkit.Maui.UnitTests/Extensions/ServiceCollectionExtensionsTests.cs

+73-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,28 @@ public void IServiceCollection_VerifyTransientPopup()
1818
var services = MauiApp.CreateBuilder().Services;
1919
const ServiceLifetime expectedServiceLifetime = ServiceLifetime.Transient;
2020

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+
2143
// Act
2244
services.AddTransientPopup<MockSelfClosingPopup, MockPageViewModel>();
2345
var serviceProvider = services.BuildServiceProvider();
@@ -150,24 +172,46 @@ public void IServiceCollection_VerifySingletonPopup()
150172
const ServiceLifetime expectedServiceLifetime = ServiceLifetime.Singleton;
151173
var services = MauiApp.CreateBuilder().Services;
152174

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+
153197
// Act
154198
services.AddSingletonPopup<MockSelfClosingPopup, MockPageViewModel>();
155199
var serviceProvider = services.BuildServiceProvider();
156200

157201
// 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));
159203
var mockViewModelServiceDescriptor = services.Single(s => s.ServiceType == mockViewModelType && s.Lifetime.Equals(expectedServiceLifetime));
160204

161-
Assert.NotNull(mockPpopupServiceDescriptor);
205+
Assert.NotNull(mockPopupServiceDescriptor);
162206
Assert.NotNull(mockViewModelServiceDescriptor);
163207

164-
Assert.Equal(expectedServiceLifetime, mockPpopupServiceDescriptor.Lifetime);
208+
Assert.Equal(expectedServiceLifetime, mockPopupServiceDescriptor.Lifetime);
165209
Assert.Equal(expectedServiceLifetime, mockViewModelServiceDescriptor.Lifetime);
166210

167-
Assert.Equal(mockPopupType, mockPpopupServiceDescriptor.ServiceType);
211+
Assert.Equal(mockPopupType, mockPopupServiceDescriptor.ServiceType);
168212
Assert.Equal(mockViewModelType, mockViewModelServiceDescriptor.ServiceType);
169213

170-
Assert.Equal(mockPopupType, mockPpopupServiceDescriptor.ImplementationType);
214+
Assert.Equal(mockPopupType, mockPopupServiceDescriptor.ImplementationType);
171215
Assert.Equal(mockViewModelType, mockViewModelServiceDescriptor.ImplementationType);
172216

173217
Assert.IsType<MockSelfClosingPopup>(serviceProvider.GetRequiredService<MockSelfClosingPopup>());
@@ -283,6 +327,28 @@ public void IServiceCollection_VerifyScopedPopup()
283327
const ServiceLifetime expectedServiceLifetime = ServiceLifetime.Scoped;
284328
var services = MauiApp.CreateBuilder().Services;
285329

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+
286352
// Act
287353
services.AddScopedPopup<MockSelfClosingPopup, MockPageViewModel>();
288354
var serviceProvider = services.BuildServiceProvider();
@@ -414,4 +480,6 @@ protected override void Dispose(bool isDisposing)
414480
Routing.Clear();
415481
base.Dispose(isDisposing);
416482
}
483+
484+
sealed class MockPopup : View;
417485
}

0 commit comments

Comments
 (0)