Files
2026-09-02 09:38:45 +08:00

59 lines
2.2 KiB
C#

namespace Yh.SchClass.OpenApi.Tests;
/// <summary>UserInfo(师生统一用户)端点契约与 <see cref="UserInfoVo"/> 反序列化。</summary>
public class SchClassUserInfoClientTests
{
private const string Root = "/oapi/UserInfo/";
[Fact]
public async Task UserInfo_全部2个端点_路径与参数名对齐()
{
var handler = SchClassTestHost.Ok();
var api = SchClassTestHost.Api(handler);
await api.UserInfo.GetUserListAsync("S1");
SchClassTestHost.Verify(handler, HttpMethod.Get, Root + "GetUserList", "?SchSerID=S1");
await api.UserInfo.GetUserIdListAsync(1001);
SchClassTestHost.Verify(handler, HttpMethod.Get, Root + "getUserIdList", "?userid=1001");
}
[Fact]
public async Task UserInfoVO_大小写不敏感匹配Jackson推导键名()
{
// Jackson 从 getter 推导的键名大小写与 Java 字段不完全一致(如 schSerID / idcard),
// Web 默认大小写不敏感,故两种形态都能命中。
var handler = FakeHandler.Json(HttpStatusCode.OK, """
[{"schSerID":"S001","no":1,"idcard":"110101","userID":1001,"sex":1,"usertype":1,
"serID":null,"photo":null,"tel":"13800000000","uids":"wang","groupID":30,"name":"王老师"}]
""");
var list = await SchClassTestHost.Api(handler).UserInfo.GetUserListAsync("S001");
var user = Assert.Single(list);
Assert.Equal("S001", user.SchSerId);
Assert.Equal("110101", user.IdCard);
Assert.Equal(1001, user.UserId);
Assert.Equal(30, user.GroupId);
Assert.Equal("王老师", user.Name);
Assert.Null(user.SerId);
Assert.Null(user.Photo);
}
[Fact]
public async Task GetUserList_服务端204无内容时返回空列表()
{
var handler = FakeHandler.Empty(HttpStatusCode.NoContent);
Assert.Empty(await SchClassTestHost.Api(handler).UserInfo.GetUserListAsync("S1"));
}
[Fact]
public async Task getUserIdList_未找到时服务端404返回空列表()
{
var handler = FakeHandler.Empty(HttpStatusCode.NotFound);
Assert.Empty(await SchClassTestHost.Api(handler).UserInfo.GetUserIdListAsync(-1));
}
}