This commit is contained in:
wanghu
2026-09-02 09:38:45 +08:00
commit 8774b6cc44
128 changed files with 9382 additions and 0 deletions
@@ -0,0 +1,70 @@
namespace Yh.SchClass.OpenApi.Tests;
/// <summary>OATea(教师)端点契约与 <see cref="TeaInfoVo"/> 反序列化。</summary>
public class SchClassTeaInfoClientTests
{
private const string Root = "/oapi/OATea/";
[Fact]
public async Task OATea_全部4个端点_路径与参数名对齐()
{
var handler = SchClassTestHost.Ok();
var api = SchClassTestHost.Api(handler);
await api.TeaInfo.GetTeaInfoAsync(77);
SchClassTestHost.Verify(handler, HttpMethod.Get, Root + "GetTeainfo", "?uid=77");
await api.TeaInfo.GetArrTeaInfoAsync("77,78");
SchClassTestHost.VerifyBody(handler, Root + "GetArrTeainfo", "77,78");
await api.TeaInfo.GetSchTeaInfoAsync("S1", 2);
SchClassTestHost.Verify(handler, HttpMethod.Get, Root + "GetSchTeainfo", "?SchSerID=S1&schId=2");
await api.TeaInfo.GetSchTeaListAsync("S1", 2);
SchClassTestHost.Verify(handler, HttpMethod.Get, Root + "GetSchTeaList", "?SchSerID=S1&schId=2");
}
[Fact]
public async Task TeaInfoVO_字段按Java原名反序列化()
{
var handler = FakeHandler.Json(HttpStatusCode.OK, """
{"SchSerID":"S001","Teapolitical":"党员","TeaWorkStart":"2010-09-01","Account":"wang",
"SchSerIDs":"S001","role":3,"JiaoYuJu":"市教育局","TeaSex":"男","IsLeadingMiddle":0,
"TeaOriginPlace":"北京","Photo":null,"TeaIDCard":"110101","Name":"王老师","GroupID":30,
"SchName":"第一中学","TeaTeachStart":"2010-09-01","TeaSerID":"77","UserID":1001,
"TeaNation":"汉","Tel":"13800000000","TeaWorkType":"专任","TeaNo":7,"TeaBirth":"1985-01-01"}
""");
var tea = await SchClassTestHost.Api(handler).TeaInfo.GetTeaInfoAsync(77);
Assert.NotNull(tea);
Assert.Equal("王老师", tea!.Name);
Assert.Equal("S001", tea.SchSerId);
// 注意:查询参数 uid 传的是教师 teaId(77),而 VO.UserID 是用户中心 ID(1001),两者不是一回事
Assert.Equal("77", tea.TeaSerId);
Assert.Equal(1001, tea.UserId);
Assert.Equal(3, tea.Role);
Assert.Equal(30, tea.GroupId);
Assert.Equal("汉", tea.TeaNation);
Assert.Null(tea.Photo);
}
[Fact]
public async Task 教师不存在_服务端404时返回null()
{
var handler = FakeHandler.Empty(HttpStatusCode.NotFound);
Assert.Null(await SchClassTestHost.Api(handler).TeaInfo.GetTeaInfoAsync(999999));
}
[Fact]
public async Task GetSchTeainfo_缺参数时服务端400抛异常()
{
var handler = FakeHandler.Text(HttpStatusCode.BadRequest, "schId 与 SchSerID 不能同时为空");
var ex = await Assert.ThrowsAsync<SchClassOpenApiException>(
() => SchClassTestHost.Api(handler).TeaInfo.GetSchTeaInfoAsync());
Assert.Equal(400, ex.StatusCode);
}
}