diff --git a/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs b/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs new file mode 100644 index 00000000..bf71fcfa --- /dev/null +++ b/AsbCloudWebApi.IntegrationTests/Repository/DataSaubStatRepositoryTest.cs @@ -0,0 +1,120 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Data.ProcessMapPlan; +using AsbCloudApp.Repositories; +using AsbCloudDb.Model; +using Mapster; +using Microsoft.Extensions.DependencyInjection; +using System.ComponentModel; +using Xunit; + +namespace AsbCloudWebApi.IntegrationTests.Repository +{ + public class DataSaubStatRepositoryTest : BaseIntegrationTest + { + private static readonly DataSaubStatDto[] statDtos = new DataSaubStatDto[2] + { + new DataSaubStatDto() + { + IdTelemetry = 1, + DateEnd = DateTimeOffset.UtcNow.AddDays(-10), + DateStart = DateTimeOffset.UtcNow.AddDays(-11), + AxialLoad = 10.0, + AxialLoadLimitMax = 10.0, + AxialLoadSp = 10.0, + BlockSpeedSp = 1000, + DepthEnd = 10.0, + DepthStart = 5.0, + EnabledSubsystems = 1, + Flow = 10.0, + HasOscillation = true, + Id = default, + IdCategory = 2, + IdFeedRegulator = 1, + Pressure = 10.0, + PressureIdle = 10.0, + PressureSp = 10.0, + RotorSpeed = 10.0, + RotorTorque = 10.0, + RotorTorqueSp = 10.0, + RotorTorqueLimitMax = 10.0, + Speed = 10.0 + }, + new DataSaubStatDto() + { + IdTelemetry = 1, + DateEnd = DateTimeOffset.UtcNow.AddDays(-20), + DateStart = DateTimeOffset.UtcNow.AddDays(-21), + AxialLoad = 10.0, + AxialLoadLimitMax = 10.0, + AxialLoadSp = 10.0, + BlockSpeedSp = 1000, + DepthEnd = 10.0, + DepthStart = 5.0, + EnabledSubsystems = 1, + Flow = 10.0, + HasOscillation = true, + Id = default, + IdCategory = 2, + IdFeedRegulator = 1, + Pressure = 10.0, + PressureIdle = 10.0, + PressureSp = 10.0, + RotorSpeed = 10.0, + RotorTorque = 10.0, + RotorTorqueSp = 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) + { + var stats = dbContext.Set(); + var categories = dbContext.Set(); + + categories.RemoveRange(categories); + stats.RemoveRange(stats); + dbContext.SaveChanges(); + + categories.Add(category); + + var entities = statDtos.Select(stat => stat.Adapt()); + stats.AddRange(entities); + dbContext.SaveChanges(); + + dataSaubStatRepository = scope.ServiceProvider.GetRequiredService(); + } + + [Fact] + public async Task GetLastDatesAsync_returns_success() + { + //act + var telemetryIds = statDtos.Select(stat => stat.IdTelemetry).ToArray(); + var result = await dataSaubStatRepository.GetLastDatesAsync(telemetryIds, CancellationToken.None); + + var expected = statDtos.Max(stat => stat.DateEnd); + var actual = result.Any() ? result.First().DateEnd : DateTimeOffset.UnixEpoch; + + //assert + Assert.Equal(expected.Ticks, actual.Ticks); + } + + [Fact] + public async Task InsertRangeAsync_returns_success() + { + //act + var result = await dataSaubStatRepository.InsertRangeAsync(statDtos, CancellationToken.None); + + //assert + Assert.Equal(statDtos.Length, result); + } + } +} diff --git a/AsbCloudWebApi.Tests/Services/DataSaubStat/DataSaubStatServiceTests.cs b/AsbCloudWebApi.Tests/Services/DataSaubStat/DataSaubStatServiceTests.cs deleted file mode 100644 index 18164509..00000000 --- a/AsbCloudWebApi.Tests/Services/DataSaubStat/DataSaubStatServiceTests.cs +++ /dev/null @@ -1,71 +0,0 @@ -using AsbCloudApp.Data; -using AsbCloudApp.Data.ProcessMaps; -using AsbCloudApp.Repositories; -using NSubstitute; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -namespace AsbCloudWebApi.Tests.Services.ProcessMaps; - -public class DataSaubStatServiceTests -{ - private readonly IEnumerable stats = new DataSaubStatDto[] - { - new() - { - IdTelemetry = 1, - DateEnd = DateTimeOffset.UtcNow.AddDays(-10), - DateStart = DateTimeOffset.UtcNow.AddDays(-11), - AxialLoad = 10.0, - AxialLoadLimitMax = 10.0, - AxialLoadSp = 10.0, - BlockSpeedSp = 1000, - DepthEnd = 10.0, - DepthStart = 5.0, - EnabledSubsystems = 1, - Flow = 10.0, - HasOscillation = true, - Id = 1, - IdCategory = 2, - IdFeedRegulator = 1, - Pressure = 10.0, - PressureIdle = 10.0, - PressureSp = 10.0, - RotorSpeed = 10.0, - RotorTorque = 10.0, - RotorTorqueSp = 10.0, - RotorTorqueLimitMax = 10.0, - Speed = 10.0, - Telemetry = new TelemetryDto(){ - Id = 1, - }, - OperationCategory = new WellOperationCategoryDto(){ - Id = 2, - } - } - }; - private readonly IDataSaubStatRepository dataSaubStatRepository; - - public DataSaubStatServiceTests() - { - dataSaubStatRepository = Substitute.For(); - } - - [Fact] - public async Task GetAsync_ReturnsDataSaubStat() - { - dataSaubStatRepository.GetLastDatesAsync(Arg.Any(), Arg.Any()).Returns(stats); - Assert.Equal(2, stats.Count()); - } - - [Fact] - public async Task InsertRangeAsync_Returns_statusOk() - { - var result = await dataSaubStatRepository.InsertRangeAsync(stats, Arg.Any()); - Assert.Equal(1, result); - } -} \ No newline at end of file