using DigitalData.Core.Client; using DigitalData.Core.Client.Interface; using Microsoft.Extensions.DependencyInjection; namespace DigitalData.Core.Tests.Client { [TestFixture] public class BaseHttpClientServiceTests { private IServiceProvider _serviceProvider; private IBaseHttpClientService _service; [SetUp] public void SetUp() { //_serviceProvider = new ServiceCollection() // .AddHttpClientService("https://jsonplaceholder.typicode.com", "todos") // .BuildServiceProvider(); _service = _serviceProvider.GetRequiredService(); } [Test] public async Task FetchJsonAsync_ShouldReturnJsonResponse_WithCorrectWithPath() { // Act var expectedUserId = (int) await _service.FetchAsync(path: "/1", sendWithCookie: false, saveCookie: false) .ThenAsync(res => res.Json()) .ThenAsync(todo => todo.userId); // Assert Assert.That(expectedUserId, Is.EqualTo(1), "The userId of the fetched JSON object should be 1."); } [Test] public async Task FetchJsonAsync_ShouldReturnJsonResponse_WithQueryParams() { var queryParams = new Dictionary { { "id", "1" } }; // Act var dyn_id = await _service.FetchAsync(queryParams: queryParams, sendWithCookie: false, saveCookie: false) .ThenAsync(res => res.JsonList()) .ThenAsync(todo => todo.FirstOrDefault()?.userId); try { Assert.That((int)dyn_id, Is.EqualTo(1), "The userId of the fetched JSON object should be 1."); } catch (InvalidCastException) { // Handle the case where the cast is not possible Assert.Fail("The id could not be cast to an integer."); } } } }