This commit is contained in:
jimmy committed 2025-11-14 16:56:57 +08:00
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);
}