releases/tests/Paca.Tests/Mobile/MobileUiProductionGateTests.cs
Yun Chan f1949024fc feat(mobile): advance Paca.Mobile to production excellence with rich design assets and core systems
- Generate high-resolution glassmorphism app icon and splash screen assets
- Implement MobileIconSystem with semantic SF Symbols/Material glyph mappings
- Add OLEDBlack theme and contrast tokens to MobileThemeSystem
- Implement VideoSnifferParser.NegotiateBestQuality for multi-stream quality resolution
- Enhance DiscoverPage, FavoritesPage, and SyncSettingsPage with production controls
- Add Gate 103-114 test suites with 100% test pass rate
2026-09-03 22:13:54 +09:00

93 lines
3.5 KiB
C#

using System;
using System.IO;
using System.Text.RegularExpressions;
using Paca.Tests.Infrastructure;
using Xunit;
namespace Paca.Tests.Mobile;
/// <summary>
/// 모바일 프로덕션 UI 뷰, 5대 탭, 컨트롤 실존 및 레이아웃 무결성 게이트 (Gate 93 ~ Gate 97)
/// </summary>
public class MobileUiProductionGateTests
{
private static string MobileProjectDir => Directory.Exists(Path.Combine(SourceTree.Root, "src", "Paca.Mobile"))
? Path.Combine(SourceTree.Root, "src", "Paca.Mobile")
: Path.Combine(SourceTree.Root, "Paca.Mobile");
[Fact]
public void Gate93_TabbedRootPage_FiveTabs_Completeness_Audit()
{
var rootCs = File.ReadAllText(Path.Combine(MobileProjectDir, "TabbedRootPage.cs"));
Assert.Contains("QueuePage", rootCs);
Assert.Contains("DiscoverPage", rootCs);
Assert.Contains("BrowserPage", rootCs);
Assert.Contains("FavoritesPage", rootCs);
Assert.Contains("SyncSettingsPage", rootCs);
}
[Fact]
public void Gate94_DiscoverPage_SearchControls_Audit()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("class DiscoverPage", pagesCs);
Assert.Contains("_searchEntry", pagesCs);
Assert.Contains("_platformChips", pagesCs);
Assert.Contains("YouTube", pagesCs);
Assert.Contains("Vimeo", pagesCs);
}
[Fact]
public void Gate95_FavoritesPage_Stash_And_Tagging_Ui_Audit()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("class FavoritesPage", pagesCs);
Assert.Contains("_tagFilter", pagesCs);
Assert.Contains("_favoritesList", pagesCs);
}
[Fact]
public void Gate96_QueuePage_EmptyIllustration_And_Retry_Audit()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("paca_empty_queue.png", pagesCs);
Assert.Contains("재시도", pagesCs);
}
[Fact]
public void Gate97_SyncSettingsPage_RemoteTabs_Ui_Audit()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("class SyncSettingsPage", pagesCs);
Assert.Contains("_remoteTabsList", pagesCs);
Assert.Contains("PC 탭 동기화", pagesCs);
}
[Fact]
public void Gate111_DiscoverPage_Enqueue_And_Favorite_Action_Buttons_Audit()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("_enqueueBtn", pagesCs);
Assert.Contains("_favoriteBtn", pagesCs);
Assert.Contains("다운로드 큐 추가", pagesCs);
Assert.Contains("즐겨찾기 저장", pagesCs);
}
[Fact]
public void Gate112_SyncSettingsPage_ThemeOptions_Includes_OLEDBlack()
{
var pagesCs = File.ReadAllText(Path.Combine(MobileProjectDir, "Pages.cs"));
Assert.Contains("OLED 블랙", pagesCs);
Assert.Contains("_wifiOnlySwitch", pagesCs);
Assert.Contains("_speedLimitEntry", pagesCs);
}
[Fact]
public void Gate113_AppIcon_And_Splash_Assets_Exist_And_Referenced()
{
var appIconPath = Path.Combine(MobileProjectDir, "Resources", "AppIcon", "paca_app_icon.png");
var splashPath = Path.Combine(MobileProjectDir, "Resources", "Splash", "paca_splash_screen.png");
Assert.True(File.Exists(appIconPath), "paca_app_icon.png must exist");
Assert.True(File.Exists(splashPath), "paca_splash_screen.png must exist");
}
}