feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization

This commit is contained in:
Yun Chan 2026-09-14 00:39:44 +09:00
parent a88aafa1e5
commit 0e568f1f0a
975 changed files with 130593 additions and 16783 deletions

View file

@ -0,0 +1,70 @@
using System.Linq;
using Paca.Browser.Tabs;
using Xunit;
namespace Paca.Tests.Browser;
public class ChromeOmniboxSiteSearchTests
{
[Theory]
[InlineData("@tabs youtube", SiteSearchScope.Tabs, "youtube")]
[InlineData("@탭 네이버", SiteSearchScope.Tabs, "네이버")]
[InlineData("@history github", SiteSearchScope.History, "github")]
[InlineData("@기록 flutter", SiteSearchScope.History, "flutter")]
[InlineData("@bookmarks 개발", SiteSearchScope.Bookmarks, "개발")]
[InlineData("@북마크 paca", SiteSearchScope.Bookmarks, "paca")]
[InlineData("@즐겨찾기 news", SiteSearchScope.Bookmarks, "news")]
public void Parse_Recognizes_Valid_SiteSearch_Scopes(string input, SiteSearchScope expectedScope, string expectedFilter)
{
var result = OmniboxSiteSearchEvaluator.Parse(input);
Assert.NotNull(result);
Assert.Equal(expectedScope, result.Scope);
Assert.Equal(expectedFilter, result.FilterText);
}
[Theory]
[InlineData("@tabs", SiteSearchScope.Tabs, "")]
[InlineData("@history", SiteSearchScope.History, "")]
[InlineData("@bookmarks", SiteSearchScope.Bookmarks, "")]
public void Parse_Handles_Empty_Filter(string input, SiteSearchScope expectedScope, string expectedFilter)
{
var result = OmniboxSiteSearchEvaluator.Parse(input);
Assert.NotNull(result);
Assert.Equal(expectedScope, result.Scope);
Assert.Equal(expectedFilter, result.FilterText);
}
[Theory]
[InlineData("hello world")]
[InlineData("https://example.com")]
[InlineData("@unknown something")]
[InlineData("")]
[InlineData(null)]
public void Parse_Returns_Null_For_Non_SiteSearch_Input(string? input)
{
var result = OmniboxSiteSearchEvaluator.Parse(input);
Assert.Null(result);
}
[Fact]
public void Scopes_Contain_Proper_Glyphs_And_Descriptions()
{
Assert.NotEmpty(OmniboxSiteSearchEvaluator.Scopes);
Assert.All(OmniboxSiteSearchEvaluator.Scopes, s =>
{
Assert.StartsWith("@", s.Keyword);
Assert.NotEmpty(s.DisplayTitle);
Assert.NotEmpty(s.Description);
Assert.NotEmpty(s.Glyph);
});
}
[Fact]
public void MainWindow_Integrates_OmniboxSiteSearch()
{
var csPath = Paca.Tests.Infrastructure.SourceTree.AppPath("MainWindow.xaml.cs");
Assert.True(System.IO.File.Exists(csPath));
var code = System.IO.File.ReadAllText(csPath);
Assert.Contains("OmniboxSiteSearchEvaluator.Parse", code);
}
}