refactor: split node agent and Go control plane
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using WxAgent.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace WxAgent.Core.Tests;
|
||||
|
||||
public sealed class WechatGroupMemberQueryTests
|
||||
{
|
||||
[Fact]
|
||||
public void QueryUsesStableIdsAndBoundParameters()
|
||||
{
|
||||
var parameters = WechatGroupMemberQuery.Parameters("123@chatroom", 2, 4).ToDictionary(pair => pair.Key, pair => pair.Value);
|
||||
Assert.Equal("123@chatroom", parameters["$group"]);
|
||||
Assert.Equal(3, parameters["$limit"]);
|
||||
Assert.Equal(4, parameters["$offset"]);
|
||||
Assert.Contains("c.id = m.member_id", WechatGroupMemberQuery.Sql);
|
||||
Assert.Contains("ORDER BY m.member_id", WechatGroupMemberQuery.Sql);
|
||||
Assert.DoesNotContain("123@chatroom", WechatGroupMemberQuery.Sql);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("group")]
|
||||
[InlineData("")]
|
||||
[InlineData(" ")]
|
||||
public void StableGroupUsernameIsRequired(string group) =>
|
||||
Assert.Equal(WxAgentErrorCode.InvalidArgument,
|
||||
Assert.Throws<WxAgentException>(() => WechatGroupMemberQuery.Parameters(group, 1, 0)).Code);
|
||||
|
||||
[Fact]
|
||||
public void PagePreservesDuplicateDisplayNamesAndSignalsNextOffset()
|
||||
{
|
||||
WechatDatabaseGroupMember[] rows =
|
||||
[
|
||||
new(1, "one", "same", true), new(2, "two", "same", false), new(3, "three", "three", false)
|
||||
];
|
||||
var page = WechatGroupMemberQuery.Page("123@chatroom", rows, 2, 4);
|
||||
Assert.True(page.HasMore);
|
||||
Assert.Equal(6, page.NextOffset);
|
||||
Assert.Equal(new[] { "one", "two" }, page.Members.Select(member => member.Username));
|
||||
Assert.True(page.Members[0].IsOwner);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user