using System.IO; using Paca.App; using Paca.Core.Config; using Paca.Tests.Infrastructure; using Xunit; namespace Paca.Tests.Browser; /// /// 도구 모음(툴바) 버튼 커스터마이징 및 팝업 정렬 검증: /// - AppConfig 에 기본 툴바 버튼 목록 상수 및 헬퍼 정의 /// - SettingsWindow.xaml 에 "도구 모음" 섹션과 개별 버튼 체크박스 존재 /// - SettingsWindow.xaml.cs 에 도구 모음 설정 로드/저장/섹션 탐색 연동 /// - MainWindow.xaml 에 툴바 버튼 우클릭 컨텍스트 메뉴 및 고유 식별자 존재 /// - MainWindow.xaml.cs 에 ApplyToolbarButtons 로직 및 팝업 우측 정렬 콜백 정의 /// 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 메서드가 정의되어 있어야 합니다."); } }