forked from ddrilling/AsbCloudServer
fix tests
This commit is contained in:
parent
2b4000ce6b
commit
1e27b7e559
@ -5,161 +5,161 @@ using Mapster;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.IntegrationTests.Repository
|
namespace AsbCloudWebApi.IntegrationTests.Repository;
|
||||||
|
|
||||||
|
public class DataSaubStatRepositoryTest : BaseIntegrationTest
|
||||||
{
|
{
|
||||||
public class DataSaubStatRepositoryTest : BaseIntegrationTest
|
private static readonly TimeSpan timeSpan = TimeSpan.FromHours(1);
|
||||||
|
|
||||||
|
private static readonly DataSaubStatDto[] statDtos = new DataSaubStatDto[2]
|
||||||
{
|
{
|
||||||
private static readonly TimeSpan timeSpan = TimeSpan.FromHours(1);
|
new()
|
||||||
|
|
||||||
private static readonly DataSaubStatDto[] statDtos = new DataSaubStatDto[2]
|
|
||||||
{
|
{
|
||||||
new DataSaubStatDto()
|
IdTelemetry = 1,
|
||||||
{
|
DateEnd = new DateTimeOffset(2024, 1, 1, 20, 25, 0, timeSpan),
|
||||||
IdTelemetry = 1,
|
DateStart = new DateTimeOffset(2024, 1, 1, 20, 15, 0, timeSpan),
|
||||||
DateEnd = new DateTimeOffset(2024, 1, 1, 20, 25, 0, timeSpan),
|
AxialLoad = 10.0,
|
||||||
DateStart = new DateTimeOffset(2024, 1, 1, 20, 15, 0, timeSpan),
|
AxialLoadLimitMax = 10.0,
|
||||||
AxialLoad = 10.0,
|
AxialLoadSp = 10.0,
|
||||||
AxialLoadLimitMax = 10.0,
|
BlockSpeedSp = 1000,
|
||||||
AxialLoadSp = 10.0,
|
DepthEnd = 10.0,
|
||||||
BlockSpeedSp = 1000,
|
DepthStart = 5.0,
|
||||||
DepthEnd = 10.0,
|
EnabledSubsystems = 1,
|
||||||
DepthStart = 5.0,
|
Flow = 10.0,
|
||||||
EnabledSubsystems = 1,
|
HasOscillation = true,
|
||||||
Flow = 10.0,
|
Id = default,
|
||||||
HasOscillation = true,
|
IdCategory = 2,
|
||||||
Id = default,
|
IdFeedRegulator = 1,
|
||||||
IdCategory = 2,
|
Pressure = 10.0,
|
||||||
IdFeedRegulator = 1,
|
PressureIdle = 10.0,
|
||||||
Pressure = 10.0,
|
PressureSp = 10.0,
|
||||||
PressureIdle = 10.0,
|
RotorSpeed = 9.0,
|
||||||
PressureSp = 10.0,
|
RotorTorque = 9.0,
|
||||||
RotorSpeed = 9.0,
|
RotorTorqueSp = 9.0,
|
||||||
RotorTorque = 9.0,
|
RotorTorqueLimitMax = 9.0,
|
||||||
RotorTorqueSp = 9.0,
|
Speed = 10.0
|
||||||
RotorTorqueLimitMax = 9.0,
|
},
|
||||||
Speed = 10.0
|
new()
|
||||||
},
|
{
|
||||||
new DataSaubStatDto()
|
IdTelemetry = 1,
|
||||||
{
|
DateEnd = new DateTimeOffset(2024, 2, 2, 20, 25, 0, timeSpan),
|
||||||
IdTelemetry = 1,
|
DateStart = new DateTimeOffset(2024, 2, 2, 20, 15, 0, timeSpan),
|
||||||
DateEnd = new DateTimeOffset(2024, 2, 2, 20, 25, 0, timeSpan),
|
AxialLoad = 10.0,
|
||||||
DateStart = new DateTimeOffset(2024, 2, 2, 20, 15, 0, timeSpan),
|
AxialLoadLimitMax = 10.0,
|
||||||
AxialLoad = 10.0,
|
AxialLoadSp = 10.0,
|
||||||
AxialLoadLimitMax = 10.0,
|
BlockSpeedSp = 1000,
|
||||||
AxialLoadSp = 10.0,
|
DepthEnd = 10.0,
|
||||||
BlockSpeedSp = 1000,
|
DepthStart = 5.0,
|
||||||
DepthEnd = 10.0,
|
EnabledSubsystems = 1,
|
||||||
DepthStart = 5.0,
|
Flow = 10.0,
|
||||||
EnabledSubsystems = 1,
|
HasOscillation = true,
|
||||||
Flow = 10.0,
|
Id = default,
|
||||||
HasOscillation = true,
|
IdCategory = 2,
|
||||||
Id = default,
|
IdFeedRegulator = 1,
|
||||||
IdCategory = 2,
|
Pressure = 10.0,
|
||||||
IdFeedRegulator = 1,
|
PressureIdle = 10.0,
|
||||||
Pressure = 10.0,
|
PressureSp = 10.0,
|
||||||
PressureIdle = 10.0,
|
RotorSpeed = 10.0,
|
||||||
PressureSp = 10.0,
|
RotorTorque = 10.0,
|
||||||
RotorSpeed = 10.0,
|
RotorTorqueSp = 10.0,
|
||||||
RotorTorque = 10.0,
|
RotorTorqueLimitMax = 10.0,
|
||||||
RotorTorqueSp = 10.0,
|
Speed = 10.0
|
||||||
RotorTorqueLimitMax = 10.0,
|
}
|
||||||
Speed = 10.0
|
};
|
||||||
}
|
private static readonly WellOperationCategory category = new()
|
||||||
|
{
|
||||||
|
Id = 2,
|
||||||
|
IdParent = null,
|
||||||
|
Name = "Категория 2"
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly IDataSaubStatRepository dataSaubStatRepository;
|
||||||
|
|
||||||
|
public DataSaubStatRepositoryTest(WebAppFactoryFixture factory) : base(factory)
|
||||||
|
{
|
||||||
|
dataSaubStatRepository = scope.ServiceProvider.GetRequiredService<IDataSaubStatRepository>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task GetLastDatesAsync_returns_success()
|
||||||
|
{
|
||||||
|
//prepare
|
||||||
|
dbContext.CleanupDbSet<DataSaubStat>();
|
||||||
|
dbContext.CleanupDbSet<WellOperationCategory>();
|
||||||
|
|
||||||
|
var dbSetSaubStat = dbContext.Set<DataSaubStat>();
|
||||||
|
var dbSetCategories = dbContext.Set<WellOperationCategory>();
|
||||||
|
|
||||||
|
var entities = statDtos.Select(stat => ConvertToEntity(stat));
|
||||||
|
|
||||||
|
dbSetCategories.Add(category);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
|
dbSetSaubStat.AddRange(entities);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
|
//act
|
||||||
|
var telemetryIds = statDtos.Select(stat => stat.IdTelemetry).ToArray();
|
||||||
|
var result = await dataSaubStatRepository.GetLastsAsync(telemetryIds, CancellationToken.None);
|
||||||
|
|
||||||
|
var expected = statDtos.Max(stat => stat.DateEnd);
|
||||||
|
var actual = result.First().DateEnd;
|
||||||
|
|
||||||
|
//assert
|
||||||
|
Assert.True((expected - actual).Ticks == 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task InsertRangeAsync_returns_success()
|
||||||
|
{
|
||||||
|
//prepare
|
||||||
|
dbContext.CleanupDbSet<DataSaubStat>();
|
||||||
|
var dbSet = dbContext.Set<DataSaubStat>();
|
||||||
|
|
||||||
|
var dbSetCategories = dbContext.Set<WellOperationCategory>();
|
||||||
|
dbSetCategories.Add(category);
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
|
//act
|
||||||
|
var result = await dataSaubStatRepository.InsertRangeAsync(statDtos, CancellationToken.None);
|
||||||
|
|
||||||
|
//assert
|
||||||
|
Assert.Equal(statDtos.Length, result);
|
||||||
|
|
||||||
|
var statDtosFromDb = dbSet.Select(stat => ConvertToDto(stat, timeSpan)).ToArray();
|
||||||
|
|
||||||
|
var excludedProps = new[] {
|
||||||
|
nameof(DataSaubStat.Telemetry),
|
||||||
|
nameof(DataSaubStat.Id),
|
||||||
|
nameof(DataSaubStat.OperationCategory)
|
||||||
};
|
};
|
||||||
private static readonly WellOperationCategory category = new()
|
foreach (var statDtoFromDb in statDtosFromDb)
|
||||||
{
|
{
|
||||||
Id = 2,
|
var statDto = statDtos
|
||||||
IdParent = null,
|
.Where(stat => stat.DateStart == statDtoFromDb.DateStart)
|
||||||
Name = "Категория 2"
|
.Where(stat => stat.DateEnd == statDtoFromDb.DateEnd)
|
||||||
};
|
.FirstOrDefault();
|
||||||
|
|
||||||
private readonly IDataSaubStatRepository dataSaubStatRepository;
|
MatchHelper.Match(statDtoFromDb, statDto, excludedProps);
|
||||||
|
|
||||||
public DataSaubStatRepositoryTest(WebAppFactoryFixture factory) : base(factory)
|
|
||||||
{
|
|
||||||
dataSaubStatRepository = scope.ServiceProvider.GetRequiredService<IDataSaubStatRepository>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public async Task GetLastDatesAsync_returns_success()
|
|
||||||
{
|
|
||||||
//prepare
|
|
||||||
dbContext.CleanupDbSet<DataSaubStat>();
|
|
||||||
|
|
||||||
var dbSetSaubStat = dbContext.Set<DataSaubStat>();
|
|
||||||
var dbSetCategories = dbContext.Set<WellOperationCategory>();
|
|
||||||
|
|
||||||
var entities = statDtos.Select(stat => ConvertToEntity(stat));
|
|
||||||
|
|
||||||
dbSetCategories.Add(category);
|
|
||||||
dbSetSaubStat.AddRange(entities);
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
|
|
||||||
//act
|
|
||||||
var telemetryIds = statDtos.Select(stat => stat.IdTelemetry).ToArray();
|
|
||||||
var result = await dataSaubStatRepository.GetLastsAsync(telemetryIds, CancellationToken.None);
|
|
||||||
|
|
||||||
var expected = statDtos.Max(stat => stat.DateEnd);
|
|
||||||
var actual = result.First().DateEnd;
|
|
||||||
|
|
||||||
//assert
|
|
||||||
Assert.True((expected - actual).Ticks == 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
[Fact]
|
|
||||||
public async Task InsertRangeAsync_returns_success()
|
|
||||||
{
|
|
||||||
//prepare
|
|
||||||
dbContext.CleanupDbSet<DataSaubStat>();
|
|
||||||
|
|
||||||
//act
|
|
||||||
var dbSet = dbContext.Set<DataSaubStat>();
|
|
||||||
dbSet.RemoveRange(dbSet);
|
|
||||||
|
|
||||||
var dbSetCategories = dbContext.Set<WellOperationCategory>();
|
|
||||||
dbSetCategories.Add(category);
|
|
||||||
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
|
|
||||||
var result = await dataSaubStatRepository.InsertRangeAsync(statDtos, CancellationToken.None);
|
|
||||||
|
|
||||||
//assert
|
|
||||||
Assert.Equal(statDtos.Length, result);
|
|
||||||
|
|
||||||
var statDtosFromDb = dbSet.Select(stat => ConvertToDto(stat, timeSpan)).ToArray();
|
|
||||||
|
|
||||||
var excludedProps = new[] {
|
|
||||||
nameof(DataSaubStat.Telemetry),
|
|
||||||
nameof(DataSaubStat.Id),
|
|
||||||
nameof(DataSaubStat.OperationCategory)
|
|
||||||
};
|
|
||||||
foreach (var statDtoFromDb in statDtosFromDb)
|
|
||||||
{
|
|
||||||
var statDto = statDtos
|
|
||||||
.Where(stat => stat.DateStart == statDtoFromDb.DateStart)
|
|
||||||
.Where(stat => stat.DateEnd == statDtoFromDb.DateEnd)
|
|
||||||
.FirstOrDefault();
|
|
||||||
|
|
||||||
MatchHelper.Match(statDtoFromDb, statDto, excludedProps);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static DataSaubStat ConvertToEntity(DataSaubStatDto stat)
|
|
||||||
{
|
|
||||||
var entity = stat.Adapt<DataSaubStat>();
|
|
||||||
entity.DateStart = entity.DateStart.ToUniversalTime();
|
|
||||||
entity.DateEnd = entity.DateEnd.ToUniversalTime();
|
|
||||||
|
|
||||||
return entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static DataSaubStatDto ConvertToDto(DataSaubStat stat, TimeSpan timeSpan)
|
|
||||||
{
|
|
||||||
var dto = stat.Adapt<DataSaubStatDto>();
|
|
||||||
dto.DateStart = dto.DateStart.ToOffset(timeSpan);
|
|
||||||
dto.DateEnd = dto.DateEnd.ToOffset(timeSpan);
|
|
||||||
|
|
||||||
return dto;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static DataSaubStat ConvertToEntity(DataSaubStatDto stat)
|
||||||
|
{
|
||||||
|
var entity = stat.Adapt<DataSaubStat>();
|
||||||
|
entity.DateStart = entity.DateStart.ToUniversalTime();
|
||||||
|
entity.DateEnd = entity.DateEnd.ToUniversalTime();
|
||||||
|
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static DataSaubStatDto ConvertToDto(DataSaubStat stat, TimeSpan timeSpan)
|
||||||
|
{
|
||||||
|
var dto = stat.Adapt<DataSaubStatDto>();
|
||||||
|
dto.DateStart = dto.DateStart.ToOffset(timeSpan);
|
||||||
|
dto.DateEnd = dto.DateEnd.ToOffset(timeSpan);
|
||||||
|
|
||||||
|
return dto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user