81 lines
3.5 KiB
C#
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([], "交流", "网络搜索"));
|
|
}
|
|
}
|