using Avalonia.Controls; using Avalonia.Headless.XUnit; using Avalonia.VisualTree; using Shouldly; using Xunit; using JdeScoping.SecureStoreManager.ViewModels; using JdeScoping.SecureStoreManager.Views; namespace JdeScoping.SecureStoreManager.Tests.Views; public class SecretEditDialogTests { [AvaloniaFact] public void SecretEditDialog_DefaultConstructor_ShowsAddSecretTitle() { // Arrange & Act var dialog = new SecretEditDialog(); dialog.Show(); // Assert dialog.Title.ShouldBe("Add Secret"); } [AvaloniaFact] public void SecretEditDialog_WithKeyValueParams_ShowsEditSecretTitle() { // Arrange & Act var dialog = new SecretEditDialog("existingKey", "existingValue"); dialog.Show(); // Assert dialog.Title.ShouldBe("Edit Secret"); } [AvaloniaFact] public void SecretEditDialog_DataContextIsSecretEditDialogViewModel() { // Arrange & Act var dialog = new SecretEditDialog(); dialog.Show(); // Assert dialog.DataContext.ShouldBeOfType(); } [AvaloniaFact] public void SecretEditDialog_HasKeyAndValueTextBoxes() { // Arrange & Act var dialog = new SecretEditDialog(); dialog.Show(); // Assert var textBoxes = dialog.GetVisualDescendants().OfType().ToList(); textBoxes.Count.ShouldBeGreaterThanOrEqualTo(2); } [AvaloniaFact] public void SecretEditDialog_HasSaveAndCancelButtons() { // Arrange & Act var dialog = new SecretEditDialog(); dialog.Show(); // Assert var buttons = dialog.GetVisualDescendants().OfType