using Avalonia.Controls; using Avalonia.Headless.XUnit; using Avalonia.VisualTree; using PostIt.Controls; using PostIt.Models; using PostIt.ViewModels; namespace PostIt.Tests; /// /// The surfaces the page's action status /// (success / warning / error message). The user reported being /// unable to copy these messages — the status text was a /// TextBlock, which Avalonia does not make selectable. It is /// now a so the message can be /// selected and copied (Ctrl+C / context menu). This test pins that: /// if the message control regresses to a plain TextBlock, /// selectability is lost and the test fails. /// public class StatusBarTests { [AvaloniaFact] public void Status_message_is_rendered_by_a_SelectableTextBlock() { var bar = new StatusBar { DataContext = StatusNotice.Error("Échec de la suppression : boom") }; var window = new Window { Content = bar }; window.Show(); var message = bar.GetVisualDescendants() .OfType() .FirstOrDefault(); Assert.NotNull(message); Assert.Equal("Échec de la suppression : boom", message!.Text); } }