88 lines
3.8 KiB
C#
88 lines
3.8 KiB
C#
using System.IO;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows;
|
|
using Paca.App;
|
|
using Paca.Tests.Infrastructure;
|
|
using Xunit;
|
|
|
|
namespace Paca.Tests.App;
|
|
|
|
public class ZenBrowserSideRailGateTests
|
|
{
|
|
[Fact]
|
|
public void Gate_ZenSideRail_XamlStructure_ContainsVerticalIconButtonsOnRight()
|
|
{
|
|
var mwXaml = SourceTree.MainWindowXaml;
|
|
|
|
// 1. Zen 브라우저 스타일 우측 세로 레일 컨테이너(ZenSideRail) 존재
|
|
Assert.Contains("x:Name=\"ZenSideRail\"", mwXaml);
|
|
|
|
// 2. SideTabsContainer 내부 세로(Vertical) 스택패널 및 3대 아이콘 글리프 포함 확인
|
|
var sideTabsBlock = Regex.Match(mwXaml, @"<Border[^>]*x:Name=""SideTabsContainer""[^>]*>(.*?)</Border>", RegexOptions.Singleline);
|
|
Assert.True(sideTabsBlock.Success, "SideTabsContainer 블록이 존재해야 합니다.");
|
|
var content = sideTabsBlock.Groups[1].Value;
|
|
|
|
Assert.Contains("Orientation=\"Vertical\"", content);
|
|
Assert.Contains("", content); // 다운로드 아이콘
|
|
Assert.Contains("", content); // 방문 기록 아이콘
|
|
Assert.Contains("", content); // 즐겨찾기 아이콘
|
|
|
|
// 3. 서랍 헤더 내 패널 타이틀 텍스트 블록(PanelTitleText) 존재 확인
|
|
Assert.Contains("x:Name=\"PanelTitleText\"", mwXaml);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate_ZenSideRail_CollapsedState_ExposesDirectAccessRailIcons()
|
|
{
|
|
var mwXaml = SourceTree.MainWindowXaml;
|
|
|
|
// 접힘 상태(56px)에서도 바로 클릭하여 펼칠 수 있는 CollapsedRailIcons 스택 확인
|
|
Assert.Contains("x:Name=\"CollapsedRailIcons\"", mwXaml);
|
|
Assert.Contains("CollapsedRailDownload_Click", mwXaml);
|
|
Assert.Contains("CollapsedRailHistory_Click", mwXaml);
|
|
Assert.Contains("CollapsedRailBookmark_Click", mwXaml);
|
|
}
|
|
|
|
[Fact]
|
|
public void Gate_ZenSideRail_SwitchingTabs_UpdatesPanelContent_AndActiveState()
|
|
{
|
|
using var sta = StaDispatcher.Start();
|
|
WpfTestApp.Ensure(sta.Dispatcher);
|
|
|
|
var ok = sta.Invoke(() =>
|
|
{
|
|
var window = new MainWindow();
|
|
window.ApplyPanelState(false); // 펼침
|
|
|
|
// 1. 기본 상태는 다운로드
|
|
Assert.Equal(Visibility.Visible, window.DownloadsPanelView.Visibility);
|
|
Assert.Equal(Visibility.Collapsed, window.HistoryPanelView.Visibility);
|
|
Assert.Equal(Visibility.Collapsed, window.BookmarksPanelView.Visibility);
|
|
Assert.Equal("다운로드", window.PanelTitleText.Text);
|
|
|
|
// 2. 방문 기록 아이콘 클릭 -> 방문 기록 뷰 활성화 및 타이틀 변경
|
|
window.SideTabHistory.IsChecked = true;
|
|
Assert.Equal(Visibility.Collapsed, window.DownloadsPanelView.Visibility);
|
|
Assert.Equal(Visibility.Visible, window.HistoryPanelView.Visibility);
|
|
Assert.Equal(Visibility.Collapsed, window.BookmarksPanelView.Visibility);
|
|
Assert.Equal("방문 기록", window.PanelTitleText.Text);
|
|
|
|
// 3. 즐겨찾기 아이콘 클릭 -> 즐겨찾기 뷰 활성화 및 타이틀 변경
|
|
window.SideTabBookmarks.IsChecked = true;
|
|
Assert.Equal(Visibility.Collapsed, window.DownloadsPanelView.Visibility);
|
|
Assert.Equal(Visibility.Collapsed, window.HistoryPanelView.Visibility);
|
|
Assert.Equal(Visibility.Visible, window.BookmarksPanelView.Visibility);
|
|
Assert.Equal("즐겨찾기", window.PanelTitleText.Text);
|
|
|
|
// 4. 다시 다운로드 아이콘 클릭 -> 복귀
|
|
window.SideTabDownloads.IsChecked = true;
|
|
Assert.Equal(Visibility.Visible, window.DownloadsPanelView.Visibility);
|
|
Assert.Equal("다운로드", window.PanelTitleText.Text);
|
|
|
|
window.Close();
|
|
return true;
|
|
});
|
|
|
|
Assert.True(ok);
|
|
}
|
|
}
|