releases/tests/Paca.Tests/Browser/ChromeOmniboxSiteSearchTests.cs

70 lines
2.5 KiB
C#

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);
}
}