Files

81 lines
3.5 KiB
C#

using WxAgent.Core;
using Xunit;
namespace WxAgent.Core.Tests;
public sealed class WechatSearchRulesTests
{
[Fact]
public void CollapsedGroupsExposeALocalExpansion_NotANetworkKeyword()
{
var page = WechatSearchRules.Parse([
("", "群聊"), ("search_item_技术交流群", "群聊\n技术交流群"), ("", "查看全部(10)"),
("", "网络搜索"), ("search_item_web_交流", "网络搜索\n交流"), ("", "交流")], "交流");
Assert.Single(page.Results);
Assert.Equal("技术交流群", page.Results[0].Name);
Assert.False(page.Results[0].IsExactMatch);
Assert.Equal("技术交流群", WechatSearchRules.RequireExact(page.Results, "技术交流群").Name);
Assert.Equal(new WechatSearchExpansion("群聊", 2, 10), Assert.Single(page.Expansions));
Assert.Throws<WxAgentException>(() => WechatSearchRules.RequireExact(page.Results, "交流"));
}
[Fact]
public void GroupsAndContactsAreBothLocal_AndDuplicateNamesRemainAmbiguous()
{
var page = WechatSearchRules.Parse([
("", "联系人"), ("search_item_交流", "联系人\n交流"),
("", "群聊"), ("search_item_交流", "群聊\n交流")], "交流");
Assert.Equal(2, page.Results.Count);
Assert.Equal(WxAgentErrorCode.InvalidOperationState,
Assert.Throws<WxAgentException>(() => WechatSearchRules.RequireExact(page.Results, "交流")).Code);
}
[Fact]
public void ExpandedLocalPageStillExcludesNetworkAndHistory()
{
var page = WechatSearchRules.Parse([
("search_item_技术交流群", "技术交流群"), ("search_item_web_交流", "交流"),
("", "聊天记录"), ("search_item_历史交流", "交流")], "交流", "群聊");
Assert.Equal("技术交流群", Assert.Single(page.Results).Name);
Assert.Empty(page.Expansions);
}
[Fact]
public void ExpandedPageDoesNotTrustUnknownSectionsOrTheirSearchIds()
{
var page = WechatSearchRules.Parse([
("search_item_技术交流群", "技术交流群"),
("", "未知类别"), ("search_item_new_kind_交流", "交流")], "交流", "群聊");
Assert.Equal("技术交流群", Assert.Single(page.Results).Name);
}
[Fact]
public void PromotedLocalConversationRemainsSelectableButUnknownFamiliesDoNot()
{
var page = WechatSearchRules.Parse([
("", "最常使用"), ("search_item_技术交流群", "技术交流群"),
("search_item_function_交流", "交流"), ("search_item_online_交流", "交流"),
("search_item_future_交流", "交流")], "交流");
Assert.Equal("技术交流群", WechatSearchRules.RequireExact(page.Results, "技术交流群").Name);
Assert.Single(page.Results);
}
[Fact]
public void ACategoryCaptionIsNotTheConversationName()
{
var page = WechatSearchRules.Parse([("", "群聊"), ("search_item_技术群", "群聊\n技术群")], "群聊");
Assert.Equal("技术群", Assert.Single(page.Results).Name);
Assert.False(page.Results[0].IsExactMatch);
}
[Fact]
public void WebExpansionAndUnclassifiedSearchItemsAreNeverTargets()
{
var page = WechatSearchRules.Parse([
("search_item_交流", "交流"), ("", "网络搜索"), ("", "查看全部(99)")], "交流");
Assert.Empty(page.Results);
Assert.Empty(page.Expansions);
Assert.Throws<WxAgentException>(() => WechatSearchRules.Parse([], "交流", "网络搜索"));
}
}