using Strata.ApiCommunication.Http; using System.Net.Http.Json; namespace Strata.ContinuousImprovement.Api.Test.Integration.Tests { [TestFixture(Category = "Integration")] public class TestInitiativesController : ApiTestBase { protected const string InitiativesEndpoint = "api/v1/initiatives"; protected const string InitiativesDetailColumnsEndpoint = "api/v1/initiative-detail-columns"; [Test] public async Task TestInitiatives() { // arrange var configurations = await GetConfigurations(); var configuration = configurations.OrderBy(c => c.DisplayOrder).First(); var configurationGuid = configuration.ConfigurationGuid; var data = new { configurationGuid, name = "", status = 0, costDrivers = Array.Empty(), costLeaders = Array.Empty(), owners = Array.Empty(), executiveSponsors = Array.Empty(), workstreams = Array.Empty(), rollupColumn1Values = Array.Empty(), rollupColumn2Values = Array.Empty(), rollupColumn3Values = Array.Empty(), groupByCategory = "CostDriver" }; var request = new HttpRequestMessage(HttpMethod.Post, InitiativesEndpoint); await request.SetContentAsJsonAsync(data); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var initiatives = await response.Content.ReadFromJsonAsync>(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(initiatives, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesCriteria() { // arrange var request = new HttpRequestMessage(HttpMethod.Get, InitiativesEndpoint + "/criteria"); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var initiativesCriteria = await response.Content.ReadFromJsonAsync>(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(initiativesCriteria, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesDetailColumnList() { // arrange var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/initiative-detail-columns/column-list"); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var detailColumns = await response.Content.ReadFromJsonAsync>(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(detailColumns, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesDefaultColumnList() { // arrange var request = new HttpRequestMessage(HttpMethod.Get, "api/v1/initiative-detail-columns/default-column-list"); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var detailColumns = await response.Content.ReadFromJsonAsync>(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(detailColumns, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesFilterOptions() { // arrange var configurations = await GetConfigurations(); var configuration = configurations.OrderBy(c => c.DisplayOrder).First(); var configurationGuid = configuration.ConfigurationGuid; var request = new HttpRequestMessage(HttpMethod.Get, InitiativesEndpoint + $"/{configurationGuid}/filter-options"); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var filterOptions = await response.Content.ReadAsStringAsync(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(filterOptions, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesFilterSettings() { // arrange var configurations = await GetConfigurations(); var configuration = configurations.OrderBy(c => c.DisplayOrder).First(); var configurationGuid = configuration.ConfigurationGuid; var request = new HttpRequestMessage(HttpMethod.Get, InitiativesEndpoint + $"/filter-settings"); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); var filterSettings = await response.Content.ReadAsStringAsync(); // assert Assert.Multiple(() => { response.AssertIsValid(); Assert.That(filterSettings, Is.Not.Null.And.Not.Empty); }); } [Test] public async Task TestInitiativesExport() { // arrange var configurations = await GetConfigurations(); var configuration = configurations.OrderBy(c => c.DisplayOrder).First(); var configurationGuid = configuration.ConfigurationGuid; var data = new { sortOptions = new { sortField = "name", sortOrder = "Asc" }, filters = new { configurationGuid, groupByCategory = "CostDriver" } }; var request = new HttpRequestMessage(HttpMethod.Post, InitiativesEndpoint + "/export?exportAll=true"); await request.SetContentAsJsonAsync(data); // act var response = await HttpClient.SendAsync(request); response.EnsureSuccessStatusCode(); // assert response.AssertIsValid(true); } } }