Files

189 lines
6.6 KiB
C#

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<string>(),
costLeaders = Array.Empty<string>(),
owners = Array.Empty<string>(),
executiveSponsors = Array.Empty<string>(),
workstreams = Array.Empty<string>(),
rollupColumn1Values = Array.Empty<string>(),
rollupColumn2Values = Array.Empty<string>(),
rollupColumn3Values = Array.Empty<string>(),
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<IEnumerable<dynamic>>();
// 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<IEnumerable<dynamic>>();
// 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<IEnumerable<dynamic>>();
// 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<IEnumerable<dynamic>>();
// 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);
}
}
}