releases/tests/Paca.Tests/Browser/ToolbarCustomizationTests.cs

87 lines
3.4 KiB
C#

using System.IO;
using Paca.App;
using Paca.Core.Config;
using Paca.Tests.Infrastructure;
using Xunit;
namespace Paca.Tests.Browser;
/// <summary>
/// 도구 모음(툴바) 버튼 커스터마이징 및 팝업 정렬 검증:
/// - AppConfig 에 기본 툴바 버튼 목록 상수 및 헬퍼 정의
/// - SettingsWindow.xaml 에 "도구 모음" 섹션과 개별 버튼 체크박스 존재
/// - SettingsWindow.xaml.cs 에 도구 모음 설정 로드/저장/섹션 탐색 연동
/// - MainWindow.xaml 에 툴바 버튼 우클릭 컨텍스트 메뉴 및 고유 식별자 존재
/// - MainWindow.xaml.cs 에 ApplyToolbarButtons 로직 및 팝업 우측 정렬 콜백 정의
/// </summary>
public class ToolbarCustomizationTests
{
[Fact]
public void AppConfig_기본_도구모음_버튼_상수가_정의되어_있다()
{
var defaults = AppConfig.DefaultToolbarButtons;
Assert.NotNull(defaults);
Assert.Contains("home", defaults);
Assert.Contains("downloads", defaults);
Assert.Contains("bookmarks", defaults);
Assert.DoesNotContain("settings", defaults);
}
[Fact]
public void SettingsWindow_도구모음_관리_섹션과_체크박스들이_존재한다()
{
var xaml = SourceTree.SettingsWindowXaml;
// 도구 모음 섹션 및 카테고리 태그
Assert.Contains("SectionToolbar", xaml);
Assert.Contains("Tag=\"도구 모음\"", xaml);
// 개별 도구모음 버튼 체크박스들
Assert.Contains("ToolbarBtn_Home", xaml);
Assert.Contains("ToolbarBtn_Bookmarks", xaml);
Assert.Contains("ToolbarBtn_History", xaml);
Assert.Contains("ToolbarBtn_Downloads", xaml);
Assert.Contains("ToolbarBtn_TabSearch", xaml);
Assert.Contains("ToolbarBtn_Shield", xaml);
Assert.Contains("ToolbarBtn_Playlist", xaml);
Assert.Contains("ToolbarBtn_Library", xaml);
Assert.Contains("ToolbarBtn_Pairing", xaml);
Assert.Contains("ToolbarBtn_Link", xaml);
Assert.Contains("ToolbarBtn_Private", xaml);
Assert.Contains("ToolbarBtn_Settings", xaml);
Assert.Contains("ToolbarBtn_OpenFolder", xaml);
Assert.Contains("ToolbarBtn_Compact", xaml);
Assert.DoesNotContain("ToolbarBtn_Go", xaml);
}
[Fact]
public void SettingsWindow_도구모음_빠른선택_버튼이_존재한다()
{
var xaml = SourceTree.SettingsWindowXaml;
Assert.Contains("ToolbarSelectDefaultsBtn", xaml);
Assert.Contains("ToolbarSelectAllBtn", xaml);
}
[Fact]
public void MainWindow_툴바버튼_컨텍스트메뉴와_이름들이_정의되어_있다()
{
var xaml = SourceTree.MainWindowXaml;
// 툴바 버튼 요소 이름
Assert.Contains("Name=\"OpenFolderBtn\"", xaml);
Assert.Contains("Name=\"SettingsBtn\"", xaml);
Assert.DoesNotContain("Name=\"GoBtn\"", xaml);
// 우클릭 컨텍스트 메뉴 리소스
Assert.Contains("x:Key=\"ToolbarButtonContextMenu\"", xaml);
Assert.Contains("도구 모음에서 숨기기", xaml);
Assert.Contains("도구 모음 사용자 지정", xaml);
}
[Fact]
public void MainWindow_ApplyToolbarButtons_메서드가_존재한다()
{
Assert.True(SourceTree.MethodExists(typeof(MainWindow), "ApplyToolbarButtons"),
"MainWindow.ApplyToolbarButtons 메서드가 정의되어 있어야 합니다.");
}
}