A:初版
This commit is contained in:
1 parent
237cbd8788
commit
ab3721912d
102 files changed
+7929
-20
No files matched your search
@@ -0,0 +1,60 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using Common.Results;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using NetClient.Abstractions;
|
||||
using NetClient.Implementations;
|
||||
using NetClient.Test.TestDoubles;
|
||||
|
||||
namespace NetClient.Test.Tests;
|
||||
|
||||
[TestClass]
|
||||
public class NetClientResultsTests
|
||||
{
|
||||
private static DefaultNetClient CreateClient(HttpMessageHandler handler)
|
||||
{
|
||||
var http = new HttpClient(handler) { BaseAddress = new Uri("https://example.com") };
|
||||
IHttpContentSerializer serializer = new TestJsonSerializer();
|
||||
var logger = NullLogger<DefaultNetClient>.Instance;
|
||||
return new DefaultNetClient(http, serializer, logger);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetResultAsync_Success_Returns_Result_With_Value()
|
||||
{
|
||||
var json = "{\"id\":1}";
|
||||
var handler = new TestHttpMessageHandler(_ => Task.FromResult(TestHttpMessageHandler.Json(HttpStatusCode.OK, json)));
|
||||
var client = CreateClient(handler);
|
||||
|
||||
var res = await client.GetResultAsync<Obj>("/obj");
|
||||
Assert.IsTrue(res.IsSuccess);
|
||||
Assert.AreEqual(1, res.Value!.id);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task GetResultAsync_Failure_Maps_StatusCode_And_Message()
|
||||
{
|
||||
var handler = new TestHttpMessageHandler(_ => Task.FromResult(TestHttpMessageHandler.Text(HttpStatusCode.BadRequest, "bad req")));
|
||||
var client = CreateClient(handler);
|
||||
|
||||
var res = await client.GetResultAsync<Obj>("/obj");
|
||||
Assert.IsTrue(res.IsFailure);
|
||||
Assert.AreEqual((long)HttpStatusCode.BadRequest, res.ErrorCode);
|
||||
StringAssert.Contains(res.ErrorMessage ?? string.Empty, "bad req");
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public async Task DeleteResultAsync_Success_Returns_Success_Result()
|
||||
{
|
||||
var handler = new TestHttpMessageHandler(_ => Task.FromResult(TestHttpMessageHandler.Text(HttpStatusCode.NoContent, "")));
|
||||
var client = CreateClient(handler);
|
||||
|
||||
var res = await client.DeleteResultAsync("/obj/1");
|
||||
Assert.IsTrue(res.IsSuccess);
|
||||
}
|
||||
|
||||
private sealed record Obj(int id);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user