Template
189 lines
6.6 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|