224 lines
4.9 KiB
C#
224 lines
4.9 KiB
C#
using System.Net;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Persistence.Client;
|
|
using Persistence.Client.Clients;
|
|
using Persistence.Database.Entity;
|
|
using Persistence.Models;
|
|
using Xunit;
|
|
|
|
namespace Persistence.IntegrationTests.Controllers;
|
|
public class WitsDataControllerTest : BaseIntegrationTest
|
|
{
|
|
private IWitsDataClient witsDataClient;
|
|
|
|
public WitsDataControllerTest(WebAppFactoryFixture factory) : base(factory)
|
|
{
|
|
var scope = factory.Services.CreateScope();
|
|
var persistenceClientFactory = scope.ServiceProvider
|
|
.GetRequiredService<PersistenceClientFactory>();
|
|
|
|
witsDataClient = persistenceClientFactory.GetClient<IWitsDataClient>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetDatesRangeAsync_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
var discriminatorId = 1;
|
|
|
|
//act
|
|
var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken());
|
|
|
|
//assert
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.NotNull(response.Content);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetPart_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
var discriminatorId = 1;
|
|
var dateBegin = DateTimeOffset.UtcNow;
|
|
var take = 1;
|
|
|
|
//act
|
|
var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken());
|
|
|
|
//assert
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.NotNull(response.Content);
|
|
Assert.Empty(response.Content);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task InsertRange_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
//act
|
|
await InsertRange();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetValuesForGraph_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
//act
|
|
|
|
//assert
|
|
}
|
|
|
|
#region AfterSave
|
|
[Fact]
|
|
public async Task GetDatesRangeAsync_AfterSave_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
var dtos = await InsertRange();
|
|
var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId;
|
|
|
|
//act
|
|
var response = await witsDataClient.GetDatesRangeAsync(discriminatorId, new CancellationToken());
|
|
|
|
//assert
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.NotNull(response.Content);
|
|
|
|
var expectedDateFrom = dtos
|
|
.Select(e => e.Timestamped)
|
|
.Min()
|
|
.ToString("dd.MM.yyyy-HH:mm:ss");
|
|
var actualDateFrom = response.Content.From.DateTime
|
|
.ToString("dd.MM.yyyy-HH:mm:ss");
|
|
Assert.Equal(expectedDateFrom, actualDateFrom);
|
|
|
|
var expectedDateTo = dtos
|
|
.Select(e => e.Timestamped)
|
|
.Min()
|
|
.ToString("dd.MM.yyyy-HH:mm:ss");
|
|
var actualDateTo = response.Content.From.DateTime
|
|
.ToString("dd.MM.yyyy-HH:mm:ss");
|
|
Assert.Equal(expectedDateTo, actualDateTo);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetPart_AfterSave_returns_success()
|
|
{
|
|
//arrange
|
|
dbContext.CleanupDbSet<ParameterData>();
|
|
|
|
var dtos = await InsertRange();
|
|
var discriminatorId = dtos.FirstOrDefault()!.DiscriminatorId;
|
|
var dateBegin = dtos.FirstOrDefault()!.Timestamped;
|
|
var take = 1;
|
|
|
|
//act
|
|
var response = await witsDataClient.GetPart(discriminatorId, dateBegin, take, new CancellationToken());
|
|
|
|
//assert
|
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
|
Assert.NotNull(response.Content);
|
|
Assert.NotEmpty(response.Content);
|
|
Assert.Equal(take, response.Content.Count());
|
|
}
|
|
|
|
[Fact]
|
|
public async Task GetValuesForGraph_AfterSave_returns_success()
|
|
{
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region BadRequest
|
|
[Fact]
|
|
public async Task InsertRange_returns_BadRequest()
|
|
{
|
|
//arrange
|
|
var dtos = new List<WitsDataDto>()
|
|
{
|
|
new WitsDataDto()
|
|
{
|
|
DiscriminatorId = -1, // < 0
|
|
Timestamped = DateTimeOffset.UtcNow,
|
|
Values = new List<WitsValueDto>()
|
|
{
|
|
new WitsValueDto()
|
|
{
|
|
RecordId = -1, // < 0
|
|
ItemId = 101, // > 100
|
|
Value = "string value"
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
//act
|
|
var response = await witsDataClient.InsertRange(dtos, new CancellationToken());
|
|
|
|
//assert
|
|
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
|
|
}
|
|
#endregion
|
|
|
|
private async Task<IEnumerable<WitsDataDto>> InsertRange()
|
|
{
|
|
//arrange
|
|
var dtos = new List<WitsDataDto>()
|
|
{
|
|
new WitsDataDto()
|
|
{
|
|
DiscriminatorId = 1,
|
|
Timestamped = DateTimeOffset.UtcNow,
|
|
Values = new List<WitsValueDto>()
|
|
{
|
|
new WitsValueDto()
|
|
{
|
|
RecordId = 11,
|
|
ItemId = 22,
|
|
Value = "string value"
|
|
},
|
|
new WitsValueDto()
|
|
{
|
|
RecordId = 11,
|
|
ItemId = 27,
|
|
Value = 2.22
|
|
}
|
|
}
|
|
},
|
|
new WitsDataDto()
|
|
{
|
|
DiscriminatorId = 2,
|
|
Timestamped = DateTimeOffset.UtcNow,
|
|
Values = new List<WitsValueDto>()
|
|
{
|
|
new WitsValueDto()
|
|
{
|
|
RecordId = 13,
|
|
ItemId = 14,
|
|
Value = "string value"
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
//act
|
|
var response = await witsDataClient.InsertRange(dtos, new CancellationToken());
|
|
|
|
//assert
|
|
var count = dtos.SelectMany(e => e.Values).Count();
|
|
Assert.Equal(HttpStatusCode.Created, response.StatusCode);
|
|
Assert.Equal(count, response.Content);
|
|
|
|
return dtos;
|
|
}
|
|
}
|