feat: add headless test.

This commit is contained in:
rabbitism
2024-11-03 23:48:13 +08:00
parent 0167310e61
commit 74e190b6a4
5 changed files with 81 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
using Avalonia.Controls;
using Avalonia.Headless.XUnit;
using Avalonia.VisualTree;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.DialogTests.StyleClassTests;
public class StyleClassTests
{
[AvaloniaFact]
public void StyleClass_Changes_Button_Content()
{
var vm = new TestViewModel();
var ursaWindow = new TestWindow()
{
DataContext = vm,
};
ursaWindow.Show();
vm.InvokeDialog();
var dialog = ursaWindow.GetVisualDescendants().OfType<DefaultDialogControl>().SingleOrDefault();
Assert.NotNull(dialog);
Assert.Contains("Custom", dialog.Classes);
var okButton = dialog.GetVisualDescendants().OfType<Button>().SingleOrDefault(a=>a.Name == DefaultDialogControl.PART_OKButton);
Assert.NotNull(okButton);
Assert.Equal("CUSTOM", okButton.Content);
var cancelButton = dialog.GetVisualDescendants().OfType<Button>().SingleOrDefault(a=>a.Name == DefaultDialogControl.PART_CancelButton);
Assert.NotNull(cancelButton);
Assert.Equal("取消", cancelButton.Content);
}
}

View File

@@ -0,0 +1,17 @@
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.DialogTests.StyleClassTests;
public class TestViewModel: ObservableObject
{
public void InvokeDialog()
{
OverlayDialog.Show<TextBlock, string>("Hello World", options: new OverlayDialogOptions()
{
Buttons = DialogButton.OKCancel,
StyleClass = "Custom",
});
}
}

View File

@@ -0,0 +1,19 @@
<u:UrsaWindow xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:u="https://irihi.tech/ursa"
mc:Ignorable="d" d:DesignWidth="800"
d:DesignHeight="450"
x:Class="HeadlessTest.Ursa.Controls.DialogTests.StyleClassTests.TestWindow"
Title="TestWindow">
<u:UrsaWindow.Styles>
<Style Selector="u|DefaultDialogControl.Custom">
<Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Content" Value="CUSTOM"/>
</Style>
</Style>
</u:UrsaWindow.Styles>
Welcome to Avalonia!
</u:UrsaWindow>

View File

@@ -0,0 +1,14 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Ursa.Controls;
namespace HeadlessTest.Ursa.Controls.DialogTests.StyleClassTests;
public partial class TestWindow : UrsaWindow
{
public TestWindow()
{
InitializeComponent();
}
}

View File

@@ -11,6 +11,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia.Headless.XUnit" Version="11.1.3" /> <PackageReference Include="Avalonia.Headless.XUnit" Version="11.1.3" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0" />
<PackageReference Include="coverlet.collector" Version="6.0.0"/> <PackageReference Include="coverlet.collector" Version="6.0.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.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.1.0.4" />