Files

168 lines
6.7 KiB
C#

using Strata.ApiCommunication.Http;
namespace Strata.ContinuousImprovement.Api.Test.Integration.Tests
{
[TestFixture(Category = "Integration")]
public class TestOpportunityController : ApiTestBase
{
[TestCaseSource(nameof(OpportunityControllerTestCases))]
public async Task OpportunityControllerTest(string testName, string url, string sortField, object? filters, bool exportable)
{
// arrange
var configurations = await GetConfigurations();
var configuration = configurations.OrderBy(c => c.DisplayOrder).First();
var configurationGuid = configuration.ConfigurationGuid;
sortField = sortField ?? "identifiedSavings";
filters = filters ?? new
{
configurationGuid,
opportunityTypes = Array.Empty<string>(),
identifiedSavings = null as object,
viewVisible = true,
excludeInitiatives = false,
opportunitySearch = ""
};
var data = new
{
pagingOptions = new
{
sortField,
sortOrder = "Desc",
first = 0,
rows = 25
},
filters,
};
var request = new HttpRequestMessage(HttpMethod.Post, url);
await request.SetContentAsJsonAsync(data);
// act
var response = await HttpClient.SendAsync(request, CancellationToken.None);
response.EnsureSuccessStatusCode();
// asert
Assert.Multiple(() =>
{
response.AssertIsValid();
});
}
[TestCaseSource(nameof(OpportunityControllerTestCases))]
public async Task OpportunityControllerFilterTest(string testName, string url, string sortField, object? filters, bool exportable)
{
// arrange
var configurations = await GetConfigurations();
var configuration = configurations.OrderBy(c => c.DisplayOrder).First();
var configurationGuid = configuration.ConfigurationGuid;
var request = new HttpRequestMessage(HttpMethod.Get, url + $"/{configurationGuid}/filter-options");
// act
var response = await HttpClient.SendAsync(request, CancellationToken.None);
response.EnsureSuccessStatusCode();
// asert
Assert.Multiple(() =>
{
response.AssertIsValid();
});
}
[TestCaseSource(nameof(OpportunityControllerTestCases))]
public async Task OpportunityControllerFilteExportTest(string testName, string url, string sortField, object? filters, bool exportable)
{
if (!exportable) { Assert.Ignore(); return; }
// arrange
var configurations = await GetConfigurations();
var configuration = configurations.OrderBy(c => c.DisplayOrder).First();
var configurationGuid = configuration.ConfigurationGuid;
sortField = sortField ?? "identifiedSavings";
filters = filters ?? new
{
configurationGuid,
opportunityTypes = Array.Empty<string>(),
identifiedSavings = null as object,
viewVisible = true,
excludeInitiatives = false,
opportunitySearch = ""
};
var data = new
{
pagingOptions = new
{
sortField,
sortOrder = "Desc",
first = 0,
rows = 25
},
filters,
};
var request = new HttpRequestMessage(HttpMethod.Post, url + $"/export");
await request.SetContentAsJsonAsync(data);
// act
var response = await HttpClient.SendAsync(request, CancellationToken.None);
response.EnsureSuccessStatusCode();
// asert
Assert.Multiple(() =>
{
response.AssertIsValid(exportable);
});
}
public static IEnumerable<TestCaseData> OpportunityControllerTestCases()
{
yield return new TestCaseData("all opportunities", "/api/v1/all-opportunities", null, new
{
configurationGuid = "aa4cba4f-2506-462c-8e34-c45b21653988"
}, true).SetName("{m} {0}");
yield return new TestCaseData("charge code opportunities", "/api/v1/charge-code-opps", null, new
{
configurationGuid = "aa4cba4f-2506-462c-8e34-c45b21653988",
opportunityTypes = Array.Empty<string>(),
identifiedSavings = null as object,
viewVisible = true,
excludeInitiatives = false,
opportunitySearch = ""
}, true).SetName("{m} {0}");
yield return new TestCaseData("encounter opportunities", "/api/v1/encounter-opportunities", null, null, true)
.SetName("{m} {0}");
yield return new TestCaseData("free form opportunities", "/api/v1/free-form-opportunities", null, null, true)
.SetName("{m} {0}");
yield return new TestCaseData("general ledger opportunities", "/api/v1/general-ledger-opportunities", null, null, true)
.SetName("{m} {0}");
yield return new TestCaseData("payroll opportunities", "/api/v1/payroll-opportunities", null, null, true)
.SetName("{m} {0}");
yield return new TestCaseData("qvi opportunities", "/api/v1/quality-variation-item-opportunities", null, null, true)
.SetName("{m} {0}");
yield return new TestCaseData("qvi breakdowns", "/api/v1/quality-variation-item-breakdowns", "identifiedSavingsTotal", new
{
exportFiltered = false,
configurationGuid = "aa4cba4f-2506-462c-8e34-c45b21653988",
identifiedSavings = 0,
breakdownIds = Array.Empty<string>(),
qualityVariationCases = 0
}, false).SetName("{m} {0}");
yield return new TestCaseData("qvi events", "/api/v1/quality-variation-item-events", "identifiedSavingsTotal", new
{
configurationGuid = "aa4cba4f-2506-462c-8e34-c45b21653988"
}, false).SetName("{m} {0}");
yield return new TestCaseData("variation opportunities", "/api/v1/variation-opportunities", null, new
{
configurationGuid = "aa4cba4f-2506-462c-8e34-c45b21653988"
}, true).SetName("{m} {0}");
}
}
}