namespace Yh.SchClass.OpenApi.Tests; /// 其余客户端(学制 / 科目 / 任课 / 学校教师 / 家长兼容)的端点契约对拍。 public class SchClassOtherClientsTests { [Fact] public async Task Schoolen_学制与年级_5个端点() { const string root = "/oapi/Schoolen/"; var handler = SchClassTestHost.Ok(); var api = SchClassTestHost.Api(handler); await api.Schooling.GetSchLenLevelListAsync("S1"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchLenLevellist", "?SchSerID=S1"); await api.Schooling.GetLevelIdListAsync(3); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetLevelIdlist", "?Schooling=3"); await api.Schooling.GetSchLenLevelFirstAsync("11"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchLenLevelFirst", "?GradeId=11"); await api.Schooling.GetSchLenListAsync("S1"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchLenlist", "?SchSerID=S1"); await api.Schooling.GetAllClassSubjectAsync(2, "S1", "2026-09-01"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetAllClassSubject", "?schId=2&schserid=S1&startTime=2026-09-01"); } [Fact] public async Task SubInfo_科目_4个端点() { const string root = "/oapi/SubInfo/"; var handler = SchClassTestHost.Ok(); var api = SchClassTestHost.Api(handler); await api.SubInfo.GetSchSubListAsync("S1", 3, 11); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchSublist", "?SchID=S1&schooling=3&gradeId=11"); await api.SubInfo.GetSchIdsSubListAsync("S1,S2"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchIdsSublist", "?SchIds=S1,S2"); await api.SubInfo.GetSchTeaSubListAsync("77"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchTeaSublist", "?UserTeaSerID=77"); await api.SubInfo.GetSchTeachSubListAsync("S1"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchTeachSublist", "?SchID=S1"); } [Fact] public async Task TeachInfo_任课_8个端点() { const string root = "/oapi/TeachInfo/"; var handler = SchClassTestHost.Ok(); var api = SchClassTestHost.Api(handler); await api.TeachInfo.GetSchTeachListAsync("S1", 77); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchTeachlist", "?SchID=S1&UserTeaSerID=77"); await api.TeachInfo.GetEleSchTeachListAsync("S1", 77); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetEleSchTeachlist", "?SchID=S1&UserTeaSerID=77"); await api.TeachInfo.GetSchArrTeachListAsync("S1,S2"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchArrTeachlist", "?SchIDArr=S1,S2"); await api.TeachInfo.GetEleSchArrTeachListAsync("S1,S2"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetEleSchArrTeachList", "?SchIDArr=S1,S2"); await api.TeachInfo.GetSchClaTeachListAsync("1001"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetSchClaTeachlist", "?ClassID=1001"); await api.TeachInfo.GetEleSchClaTeachListAsync("1001"); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetEleSchClaTeachlist", "?ClassID=1001"); await api.TeachInfo.GetElectiveClassByGradeAsync(1, 2); SchClassTestHost.Verify(handler, HttpMethod.Get, root + "GetElectiveClassByGrade", "?schoolId=1&gradeId=2"); await api.TeachInfo.GetElectiveClassByTeachersAsync("77,78"); SchClassTestHost.VerifyBody(handler, root + "GetElectiveClassByTeachers", "77,78"); } [Fact] public async Task DbClass_学校教师名单_1个端点() { var handler = SchClassTestHost.Ok(); await SchClassTestHost.Api(handler).DbClass.GetSchteaListAsync(30); SchClassTestHost.Verify(handler, HttpMethod.Get, "/oapi/DbClass/GetSchteaList", "?Group=30"); } [Fact] public async Task FamCom_家长兼容_2个端点均为POST文本体() { const string root = "/oapi/Common/FamCom/"; var handler = SchClassTestHost.Ok(); var api = SchClassTestHost.Api(handler); await api.FamilyCompat.GetStuUserFamIdListAsync("1,2"); SchClassTestHost.VerifyBody(handler, root + "GetStuUserFamIDList", "1,2"); await api.FamilyCompat.GetAllStuFamMemAsync("1,2"); SchClassTestHost.VerifyBody(handler, root + "GetAllStuFamMem", "1,2"); } }