Files

70 lines
2.9 KiB
C#

using Strata.ApiCommunication.Http;
using Strata.ApiLib.Standard.Models;
using Strata.ContinuousImprovement.Biz.Generics;
using System.Diagnostics.CodeAnalysis;
using System.Net.Http.Json;
namespace Strata.ContinuousImprovement.Api.Test.Integration.Tests
{
[ExcludeFromCodeCoverage]
[TestFixture(Category = "Integration")]
public class TestAllOpportunitiesController : ApiTestBase
{
protected const string AllOpportunitiesEndpoint = "api/v1/all-opportunities";
[Test]
public async Task TestGetAllOportunitiesFromApi()
{
// arrange
var configurations = await GetConfigurations();
var configuration = configurations.First();
var loadOptions = new Controllers.AllOpportunityLoadOptions
{
Filters = new Biz.All.Opportunities.Filters.AllFilters
{
ConfigurationGuid = configuration.ConfigurationGuid,
OpportunityTypes =
[
$"{(int)OpportunityTypes.Encounter}",
$"{(int) OpportunityTypes.QualityVariation}",
$"{(int) OpportunityTypes.Variation}",
],
ViewVisible = true
},
PagingOptions = new Biz.Pagination.PagingOptions
{
First = 0,
Rows = 100,
SortOrder = Biz.Pagination.SortOrder.Desc,
SortField = "IdentifiedSavings"
}
};
var request = new HttpRequestMessage(HttpMethod.Post, AllOpportunitiesEndpoint);
// act
await request.SetContentAsJsonAsync(loadOptions);
var response = await HttpClient.SendAsync(request, CancellationToken.None);
response.EnsureSuccessStatusCode();
// assert
Assert.Multiple(() =>
{
var opportunitiesPage = new PagedApiResponse<Info.AllOpportunityInfo>();
Assert.DoesNotThrowAsync(async () =>
opportunitiesPage = await response.Content.ReadFromJsonAsync<PagedApiResponse<Info.AllOpportunityInfo>>());
response.AssertIsValid();
Assert.That(opportunitiesPage.Data, Is.Not.Empty);
Assert.That(opportunitiesPage.Data.Count, Is.LessThanOrEqualTo(loadOptions.PagingOptions.Rows));
Assert.That(opportunitiesPage.Data.Any(opp =>
opp.OpportunityType == (int)OpportunityTypes.Encounter
|| opp.OpportunityType == (int)OpportunityTypes.QualityVariation
|| opp.OpportunityType == (int)OpportunityTypes.Variation), Is.True);
Assert.That(opportunitiesPage.PagingInfo.ResultsPerPage, Is.LessThanOrEqualTo(loadOptions.PagingOptions.Rows));
});
}
}
}