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:
parent
a88aafa1e5
commit
0e568f1f0a
975 changed files with 130593 additions and 16783 deletions
70
tests/Paca.Tests/Browser/ChromeOmniboxSiteSearchTests.cs
Normal file
70
tests/Paca.Tests/Browser/ChromeOmniboxSiteSearchTests.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue