public async Task <SalesOrderIndexViewModel> GetSalesOrders(int pageIndex, int pageSize, string territory, CustomerType?customerType) { logger.LogInformation("GetSalesOrders called"); var response = await salesOrderApiClient.GetSalesOrdersAsync( pageIndex, pageSize, territory, customerType ); var vm = new SalesOrderIndexViewModel { SalesOrders = mapper.Map <List <SalesOrderViewModel> >(response.SalesOrders), Territories = await GetTerritories(), CustomerTypes = GetCustomerTypes(), PaginationInfo = new PaginationInfoViewModel() { ActualPage = pageIndex, ItemsPerPage = response.SalesOrders.Count, TotalItems = response.TotalSalesOrders, TotalPages = int.Parse(Math.Ceiling(((decimal)response.TotalSalesOrders / pageSize)).ToString()) } }; vm.PaginationInfo.Next = (vm.PaginationInfo.ActualPage == vm.PaginationInfo.TotalPages - 1) ? "disabled" : ""; vm.PaginationInfo.Previous = (vm.PaginationInfo.ActualPage == 0) ? "disabled" : ""; return(vm); }
public async Task GetSalesOrders_SalesOrdersFound_ReturnsSalesOrders( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, List <SalesOrder> salesOrders, SalesOrderApiClient sut, int pageIndex, int pageSize, string territory, CustomerType customerType ) { //Arrange httpClient.BaseAddress = uri; var salesOrdersResult = new SalesOrdersResult { SalesOrders = salesOrders, TotalSalesOrders = salesOrders.Count }; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.OK, new StringContent( JsonSerializer.Serialize( salesOrdersResult, new JsonSerializerOptions { Converters = { new JsonStringEnumConverter() }, IgnoreReadOnlyProperties = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }), Encoding.UTF8, "application/json" ) ); //Act var response = await sut.GetSalesOrdersAsync(pageIndex, pageSize, territory, customerType); //Assert response.Should().BeEquivalentTo(salesOrdersResult); }
public void GetSalesOrders_NoSalesOrdersFound_ThrowsHttpRequestException( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, SalesOrderApiClient sut ) { //Arrange httpClient.BaseAddress = uri; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.NotFound); //Act Func <Task> func = async() => await sut.GetSalesOrdersAsync(0, 10, null, null); //Assert func.Should().Throw <HttpRequestException>() .WithMessage("Response status code does not indicate success: 404 (Not Found)."); }