test: add banner test.

This commit is contained in:
Dong Bin
2025-01-03 20:04:13 +08:00
parent d09431a9f5
commit c61d37e9e8
6 changed files with 121 additions and 7 deletions

View File

@@ -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<Button>()
.FirstOrDefault(a => a.Name == UrsaControls.Banner.PART_CloseButton);
Assert.NotNull(closeButton);
Assert.True(closeButton.IsVisible);
var clickPosition = closeButton.Bounds.Center;
clickPosition = new Point(clickPosition.X + 20, clickPosition.Y + 20);
// Act
window.MouseDown(clickPosition, MouseButton.Left);
window.MouseUp(clickPosition, MouseButton.Left);
// Assert
Assert.False(banner.IsVisible);
}
[AvaloniaFact]
public void Click_On_Banner_Does_Nothing_If_Cannot_Close()
{
// 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 = false
};
window.Content = banner;
window.Show();
Assert.True(banner.IsVisible);
var closeButton = banner.GetTemplateChildren().OfType<Button>()
.FirstOrDefault(a => a.Name == UrsaControls.Banner.PART_CloseButton);
Assert.NotNull(closeButton);
Assert.False(closeButton.IsVisible);
var clickPosition = closeButton.Bounds.Center;
clickPosition = new Point(clickPosition.X + 20, clickPosition.Y + 20);
// Act
window.MouseDown(clickPosition, MouseButton.Left);
window.MouseUp(clickPosition, MouseButton.Left);
// Assert
Assert.True(banner.IsVisible);
}
}