feat(tools): add first-run external tool installer wizard and catalog
첫 실행 시 외부 도구 설치 마법사를 띄우고 7종(FFmpeg·LibreOffice·Pandoc·ImageMagick·H2Orestart·agy·Codex)을 기본 전체 선택 상태로 순차 설치한다. - Core: ExternalToolCatalog(정적 카탈로그, winget ID 실검증), ExternalToolInstaller(winget 무인 실행·재감지 판정, IExternalCommandRunner 시드로 테스트 가능) - Core: ExternalToolDetector에 winget FFmpeg 스캔 + Pandoc/ImageMagick 감지 추가 - App: ToolSetupWindow + ToolSetupViewModel, 첫 실행 플래그(setup.tools.done), 설정 창 '외부 도구 설치/검증' 재진입 버튼 - Tests: ExternalToolInstallerTests 5건 - 기존 미커밋 작업(광고 Ads 지원: AdBannerControl/AdLargeCardControl/AdService, AI 백엔드 agy·switchboard·codex 채팅 클라이언트, 관련 테스트) 포함
This commit is contained in:
parent
f00f6567f4
commit
6a41c4a0dc
37 changed files with 2545 additions and 69 deletions
30
src/Everything2Everything.Tests/AdMobConfigTests.cs
Normal file
30
src/Everything2Everything.Tests/AdMobConfigTests.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
using Everything2Everything.Core.Ads;
|
||||
using Xunit;
|
||||
|
||||
namespace Everything2Everything.Tests;
|
||||
|
||||
public class AdMobConfigTests
|
||||
{
|
||||
[Fact]
|
||||
public void AdMobConfig_DefaultState_IsValid()
|
||||
{
|
||||
var config = new AdMobConfig();
|
||||
|
||||
Assert.NotNull(config.AppId);
|
||||
Assert.NotNull(config.BannerAdUnitId);
|
||||
Assert.NotNull(config.InterstitialAdUnitId);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenerateAppAdsTxt_ReturnsValidGoogleSpecification()
|
||||
{
|
||||
var config = new AdMobConfig
|
||||
{
|
||||
PublisherId = "pub-1234567890123456"
|
||||
};
|
||||
|
||||
string appAdsTxt = config.GenerateAppAdsTxt();
|
||||
|
||||
Assert.Contains("google.com, pub-1234567890123456, DIRECT, f08c47fec0942fa0", appAdsTxt);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue