Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/CommunityToolkit.Maui.UnitTests/BaseTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ protected virtual void Dispose(bool isDisposing)
DeviceDisplay.SetCurrent(null);
DispatcherProvider.SetCurrent(null);

// Restore default options
var options = new Options();
options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(true);
options.SetShouldEnableSnackbarOnWindows(false);
options.SetShouldSuppressExceptionsInAnimations(false);
options.SetShouldSuppressExceptionsInBehaviors(false);
options.SetShouldSuppressExceptionsInConverters(false);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using CommunityToolkit.Maui.Core;
using Xunit;

namespace CommunityToolkit.Maui.UnitTests.Extensions;

public class AppBuilderExtensionsTests : BaseTest
{
[Fact]
public void ConfirmOptionsDefaultValue()
{
// Assert
Assert.True(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage);
Assert.False(Options.ShouldEnableSnackbarOnWindows);
Assert.False(Options.ShouldSuppressExceptionsInAnimations);
Assert.False(Options.ShouldSuppressExceptionsInBehaviors);
Assert.False(Options.ShouldSuppressExceptionsInConverters);
}

[Fact]
public void UseMauiCommunityToolkit_ShouldRegisterServices()
{
// Arrange
var builder = MauiApp.CreateBuilder();

// Act
#pragma warning disable CA1416
builder.UseMauiCommunityToolkit();
#pragma warning restore CA1416

// Assert
var serviceProvider = builder.Services.BuildServiceProvider();
Assert.NotNull(serviceProvider.GetService<IPopupService>());
}

[Fact]
public void UseMauiCommunityToolkit_ShouldAssignValues()
{
// Arrange
var builder = MauiApp.CreateBuilder();

// Act
#pragma warning disable CA1416
builder.UseMauiCommunityToolkit(options =>
{
options.SetShouldEnableSnackbarOnWindows(!Options.ShouldEnableSnackbarOnWindows);
options.SetShouldUseStatusBarBehaviorOnAndroidModalPage(!Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage);
options.SetShouldSuppressExceptionsInAnimations(!Options.ShouldSuppressExceptionsInAnimations);
options.SetShouldSuppressExceptionsInBehaviors(!Options.ShouldSuppressExceptionsInBehaviors);
options.SetShouldSuppressExceptionsInConverters(!Options.ShouldSuppressExceptionsInConverters);
});
#pragma warning restore CA1416

// Assert
Assert.False(Core.Options.ShouldUseStatusBarBehaviorOnAndroidModalPage);
Assert.True(Options.ShouldEnableSnackbarOnWindows);
Assert.True(Options.ShouldSuppressExceptionsInAnimations);
Assert.True(Options.ShouldSuppressExceptionsInBehaviors);
Assert.True(Options.ShouldSuppressExceptionsInConverters);
}
}
7 changes: 4 additions & 3 deletions src/CommunityToolkit.Maui/AppBuilderExtensions.shared.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,13 @@ public static class AppBuilderExtensions
/// <returns><see cref="MauiAppBuilder"/> initialized for <see cref="CommunityToolkit.Maui"/></returns>
public static MauiAppBuilder UseMauiCommunityToolkit(this MauiAppBuilder builder, Action<Options>? options = null)
{
// Pass `null` because `options?.Invoke()` will set options on both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core`
builder.UseMauiCommunityToolkitCore(null);

// Invokes options for both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core`
options?.Invoke(new Options(builder));

// Pass `null` because `options?.Invoke()` will set options on both `CommunityToolkit.Maui` and `CommunityToolkit.Maui.Core`
// Be sure to call `.UseMauiCommunityToolkitCore(null)` after `options.Invoke(new Options(builder))` to ensure `CommunityToolkit.Maui.Core.Options` have already been set
builder.UseMauiCommunityToolkitCore(null);

builder.Services.AddSingleton<IPopupService, PopupService>();

builder.ConfigureMauiHandlers(static h =>
Expand Down