95 lines
3.0 KiB
C#
95 lines
3.0 KiB
C#
namespace Yh.SchClass.OpenApi.Tests;
|
|
|
|
/// <summary>聚合门面 <see cref="SchClassOpenApi"/> 与工厂 <see cref="SchClassOpenApiFactory"/> 的装配行为。</summary>
|
|
public class SchClassOpenApiFacadeTests
|
|
{
|
|
[Fact]
|
|
public void 门面装配全部10个子客户端()
|
|
{
|
|
var options = new SchClassOpenApiOptions { BaseHost = "http://base.yunhaixingtong.com/bschclass/oapi/" };
|
|
using var http = new HttpClient();
|
|
|
|
var api = new SchClassOpenApi(http, options);
|
|
|
|
Assert.NotNull(api.DbClass);
|
|
Assert.NotNull(api.VClass);
|
|
Assert.NotNull(api.Schooling);
|
|
Assert.NotNull(api.UserInfo);
|
|
Assert.NotNull(api.SchInfo);
|
|
Assert.NotNull(api.TeaInfo);
|
|
Assert.NotNull(api.StuInfo);
|
|
Assert.NotNull(api.TeachInfo);
|
|
Assert.NotNull(api.SubInfo);
|
|
Assert.NotNull(api.FamilyCompat);
|
|
Assert.Same(options, api.Options);
|
|
}
|
|
|
|
[Fact]
|
|
public void 门面构造_httpClient为空时抛()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(
|
|
() => new SchClassOpenApi(null!, new SchClassOpenApiOptions()));
|
|
}
|
|
|
|
[Fact]
|
|
public void 门面构造_options为空时抛()
|
|
{
|
|
using var http = new HttpClient();
|
|
|
|
Assert.Throws<ArgumentNullException>(() => new SchClassOpenApi(http, null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void 子客户端构造_参数为空时抛()
|
|
{
|
|
using var http = new HttpClient();
|
|
var options = new SchClassOpenApiOptions();
|
|
|
|
Assert.Throws<ArgumentNullException>(() => new SchClassVClassClient(null!, options));
|
|
Assert.Throws<ArgumentNullException>(() => new SchClassVClassClient(http, null!));
|
|
}
|
|
|
|
[Fact]
|
|
public void 工厂_按配置创建HttpClient()
|
|
{
|
|
var options = new SchClassOpenApiOptions
|
|
{
|
|
BaseHost = "http://base.yunhaixingtong.com/",
|
|
BasePath = "/bschclass",
|
|
ReadTimeoutMs = 3000,
|
|
};
|
|
|
|
using var http = SchClassOpenApiFactory.CreateHttpClient(options);
|
|
|
|
Assert.Equal(new Uri("http://base.yunhaixingtong.com/bschclass"), http.BaseAddress);
|
|
Assert.Equal(TimeSpan.FromMilliseconds(3000), http.Timeout);
|
|
}
|
|
|
|
[Fact]
|
|
public void 工厂_读超时非法时回落5秒()
|
|
{
|
|
var options = new SchClassOpenApiOptions { BaseHost = "http://base.yunhaixingtong.com", ReadTimeoutMs = 0 };
|
|
|
|
using var http = SchClassOpenApiFactory.CreateHttpClient(options);
|
|
|
|
Assert.Equal(TimeSpan.FromMilliseconds(5000), http.Timeout);
|
|
}
|
|
|
|
[Fact]
|
|
public void 工厂_创建完整门面()
|
|
{
|
|
var facade = SchClassOpenApiFactory.Create(new SchClassOpenApiOptions { BaseHost = "http://base.yunhaixingtong.com" });
|
|
|
|
Assert.NotNull(facade);
|
|
Assert.NotNull(facade.VClass);
|
|
Assert.NotNull(facade.StuInfo);
|
|
}
|
|
|
|
[Fact]
|
|
public void 工厂_配置为空时抛()
|
|
{
|
|
Assert.Throws<ArgumentNullException>(() => SchClassOpenApiFactory.CreateHttpClient(null!));
|
|
Assert.Throws<ArgumentNullException>(() => SchClassOpenApiFactory.Create(null!));
|
|
}
|
|
}
|