diff --git a/demo/Ursa.Demo/Pages/BannerDemo.axaml b/demo/Ursa.Demo/Pages/BannerDemo.axaml index 91c8f89..eefcdca 100644 --- a/demo/Ursa.Demo/Pages/BannerDemo.axaml +++ b/demo/Ursa.Demo/Pages/BannerDemo.axaml @@ -19,6 +19,11 @@ Classes.Bordered="{Binding Bordered}" Content="This is the Demo of Ursa Banner. " Header="Welcome to Ursa" + Width="300" + Height="100" + HorizontalAlignment="Left" + VerticalAlignment="Top" + CanClose="True" Type="{Binding SelectedType}" /> diff --git a/src/Ursa/Controls/Avatar/Avatar.cs b/src/Ursa/Controls/Avatar/Avatar.cs index a3d134c..43aaf71 100644 --- a/src/Ursa/Controls/Avatar/Avatar.cs +++ b/src/Ursa/Controls/Avatar/Avatar.cs @@ -1,4 +1,5 @@ -using Avalonia; +using System.Diagnostics.CodeAnalysis; +using Avalonia; using Avalonia.Controls; using Avalonia.Media; @@ -12,12 +13,14 @@ public class Avatar : Button public static readonly StyledProperty HoverMaskProperty = AvaloniaProperty.Register( nameof(HoverMask)); + [ExcludeFromCodeCoverage] public IImage? Source { get => GetValue(SourceProperty); set => SetValue(SourceProperty, value); } + [ExcludeFromCodeCoverage] public object? HoverMask { get => GetValue(HoverMaskProperty); diff --git a/src/Ursa/Controls/Banner/Banner.cs b/src/Ursa/Controls/Banner/Banner.cs index f852701..8b3fd1b 100644 --- a/src/Ursa/Controls/Banner/Banner.cs +++ b/src/Ursa/Controls/Banner/Banner.cs @@ -1,8 +1,10 @@ +using System.Diagnostics.CodeAnalysis; using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.Notifications; using Avalonia.Controls.Primitives; +using Avalonia.Input; using Avalonia.Interactivity; using Irihi.Avalonia.Shared.Helpers; @@ -20,15 +22,17 @@ public class Banner: HeaderedContentControl public static readonly StyledProperty CanCloseProperty = AvaloniaProperty.Register( nameof(CanClose)); + [ExcludeFromCodeCoverage] public bool CanClose { get => GetValue(CanCloseProperty); set => SetValue(CanCloseProperty, value); } - + public static readonly StyledProperty ShowIconProperty = AvaloniaProperty.Register( nameof(ShowIcon), true); + [ExcludeFromCodeCoverage] public bool ShowIcon { get => GetValue(ShowIconProperty); @@ -38,6 +42,7 @@ public class Banner: HeaderedContentControl public static readonly StyledProperty IconProperty = AvaloniaProperty.Register( nameof(Icon)); + [ExcludeFromCodeCoverage] public object? Icon { get => GetValue(IconProperty); @@ -47,6 +52,7 @@ public class Banner: HeaderedContentControl public static readonly StyledProperty TypeProperty = AvaloniaProperty.Register( nameof(Type)); + [ExcludeFromCodeCoverage] public NotificationType Type { get => GetValue(TypeProperty); @@ -63,6 +69,6 @@ public class Banner: HeaderedContentControl private void OnCloseClick(object? sender, RoutedEventArgs args) { - IsVisible = false; + SetCurrentValue(IsVisibleProperty, false); } } \ No newline at end of file diff --git a/tests/HeadlessTest.Ursa/Controls/BannerTests/Tests.cs b/tests/HeadlessTest.Ursa/Controls/BannerTests/Tests.cs new file mode 100644 index 0000000..6ac7fb7 --- /dev/null +++ b/tests/HeadlessTest.Ursa/Controls/BannerTests/Tests.cs @@ -0,0 +1,87 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Controls.Shapes; +using Avalonia.Controls.Templates; +using Avalonia.Headless; +using Avalonia.Headless.XUnit; +using Avalonia.Input; +using Avalonia.Media; +using Avalonia.VisualTree; +using UrsaControls = Ursa.Controls; + +namespace HeadlessTest.Ursa.Controls.BannerTests; + +public class Tests +{ + [AvaloniaFact] + public void Click_On_Banner_Close_Button_Should_Hide_Banner() + { + // Arrange + var window = new Window(); + var banner = new UrsaControls.Banner() + { + HorizontalAlignment = Avalonia.Layout.HorizontalAlignment.Left, + VerticalAlignment = Avalonia.Layout.VerticalAlignment.Top, + Width = 300, + Height = 100, + CanClose = true + }; + window.Content = banner; + window.Show(); + + Assert.True(banner.IsVisible); + + var closeButton = banner.GetTemplateChildren().OfType