using System.Net; using System.Text.Json; using Mapster; using Persistence.IntegrationTests.Clients; using Xunit; namespace Persistence.IntegrationTests.Controllers { public class SetpointControllerTest : BaseIntegrationTest { private ISetpointClient client; private class TestObject { public string? value1 { get; set; } public int? value2 { get; set; } } public SetpointControllerTest(WebAppFactoryFixture factory) : base(factory) { factory.ClientOptions.BaseAddress = new Uri($"http://localhost/api/Setpoint"); client = factory.GetHttpClient(string.Empty); } [Fact] public async Task GetCurrent_returns_success() { //arrange var setpointKeys = new List() { Guid.NewGuid(), Guid.NewGuid() }; //act var response = await client.GetCurrent(setpointKeys); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Empty(response.Content); } [Fact] public async Task GetHistory_returns_success() { //arrange var setpointKeys = new List() { Guid.NewGuid(), Guid.NewGuid() }; var historyMoment = DateTimeOffset.Now.ToUniversalTime(); //act var response = await client.GetHistory(setpointKeys, historyMoment); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Empty(response.Content); } [Fact] public async Task GetLog_returns_success() { //arrange var setpointKeys = new List() { Guid.NewGuid(), Guid.NewGuid() }; //act var response = await client.GetLog(setpointKeys); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Empty(response.Content); } [Fact] public async Task Save_returns_success() { //arrange var setpointKey = Guid.NewGuid(); var setpointValue = new TestObject() { value1 = "1", value2 = 2 }; //act var response = await client.Save(setpointKey, setpointValue); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(1, response.Content); } [Fact] public async Task General_test_success() { //save var setpointKey = Guid.NewGuid(); var setpointValue = new TestObject() { value1 = "1", value2 = 2 }; var saveResponse = await client.Save(setpointKey, setpointValue); Assert.Equal(HttpStatusCode.OK, saveResponse.StatusCode); Assert.Equal(1, saveResponse.Content); //current var currentResponse = await client.GetCurrent([setpointKey]); Assert.Equal(HttpStatusCode.OK, currentResponse.StatusCode); var currentContent = currentResponse.Content; Assert.NotNull(currentContent); Assert.NotEmpty(currentContent); var currentContentValue = currentContent.FirstOrDefault()?.Value?.ToString(); Assert.NotNull(currentContentValue); Assert.NotEmpty(currentContentValue); var testObjectValue = JsonSerializer.Deserialize(currentContentValue); Assert.NotNull(testObjectValue); Assert.Equal(setpointValue.value1, testObjectValue.value1); Assert.Equal(setpointValue.value2, testObjectValue.value2); //history var historyMoment = DateTimeOffset.Now.ToUniversalTime(); var historyResponse = await client.GetHistory([setpointKey], historyMoment); Assert.Equal(HttpStatusCode.OK, historyResponse.StatusCode); Assert.NotNull(historyResponse.Content); Assert.NotEmpty(historyResponse.Content); //log var logResponse = await client.GetLog([setpointKey]); Assert.Equal(HttpStatusCode.OK, logResponse.StatusCode); Assert.NotNull(logResponse.Content); Assert.NotEmpty(logResponse.Content); } } }