test: add banner test.
This commit is contained in:
87
tests/HeadlessTest.Ursa/Controls/BannerTests/Tests.cs
Normal file
87
tests/HeadlessTest.Ursa/Controls/BannerTests/Tests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
@@ -10,11 +10,12 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Avalonia.Headless.XUnit" Version="11.1.3" />
|
||||
<PackageReference Include="Avalonia.Headless.XUnit" Version="11.2.3" />
|
||||
<PackageReference Include="Avalonia.Skia" Version="11.2.3" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0" />
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="Semi.Avalonia" Version="11.1.0.4" />
|
||||
<PackageReference Include="Semi.Avalonia" Version="11.2.1.3" />
|
||||
<PackageReference Include="xunit" Version="2.5.3"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3"/>
|
||||
</ItemGroup>
|
||||
|
||||
@@ -9,5 +9,17 @@ namespace HeadlessTest.Ursa;
|
||||
public class TestAppBuilder
|
||||
{
|
||||
public static AppBuilder BuildAvaloniaApp() =>
|
||||
AppBuilder.Configure<App>().UseHeadless(new AvaloniaHeadlessPlatformOptions());
|
||||
}
|
||||
AppBuilder
|
||||
.Configure<App>()
|
||||
.UseHeadless(new AvaloniaHeadlessPlatformOptions());
|
||||
}
|
||||
|
||||
public class SkiaTestAppBuilder
|
||||
{
|
||||
public static AppBuilder BuildAvaloniaApp() =>
|
||||
AppBuilder
|
||||
.Configure<App>()
|
||||
.UseSkia()
|
||||
.UseHeadless(new AvaloniaHeadlessPlatformOptions(){ UseHeadlessDrawing = false});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user