Files
AtomUI/tests/AtomUI.Desktop.Controls.Tests/NavMenu/NavMenuSelectionTests.cs
T

63 lines
1.4 KiB
C#

using Avalonia.Threading;
using Shouldly;
using Xunit;
namespace AtomUI.Desktop.Controls.Tests.NavMenu;
public class NavMenuSelectionTests
{
static NavMenuSelectionTests()
{
AvaloniaTestApp.EnsureInitialized();
}
[Fact]
public void NavMenu_Ignores_Stale_Async_SelectedItem_Replay()
{
var menu = new AtomUI.Desktop.Controls.NavMenu
{
Mode = NavMenuMode.Inline,
IsMotionEnabled = false
};
var first = new NavMenuNode
{
Header = "First",
ItemKey = "first"
};
var second = new NavMenuNode
{
Header = "Second",
ItemKey = "second"
};
menu.Items.Add(first);
menu.Items.Add(second);
var selectedNodes = new List<INavMenuNode>();
menu.NavMenuNodeSelected += (_, args) => selectedNodes.Add(args.NavMenuNode);
var window = new Avalonia.Controls.Window
{
Width = 320,
Height = 240,
Content = menu
};
try
{
window.Show();
Dispatcher.UIThread.RunJobs();
menu.SelectedItem = first;
menu.SelectedItem = second;
Dispatcher.UIThread.RunJobs();
selectedNodes.ShouldBe([second]);
menu.SelectedItem.ShouldBeSameAs(second);
}
finally
{
window.Close();
}
}
}