diff --git a/AsbCloudInfrastructure.Tests/AsbCloudInfrastructure.Tests.csproj b/AsbCloudInfrastructure.Tests/AsbCloudInfrastructure.Tests.csproj
index a9cf66be..3a1d909a 100644
--- a/AsbCloudInfrastructure.Tests/AsbCloudInfrastructure.Tests.csproj
+++ b/AsbCloudInfrastructure.Tests/AsbCloudInfrastructure.Tests.csproj
@@ -7,11 +7,15 @@
+
+
+
+
diff --git a/AsbCloudInfrastructure.Tests/MapData/DataSaubStatDrillingQualityDtoMap.cs b/AsbCloudInfrastructure.Tests/MapData/DataSaubStatDrillingQualityDtoMap.cs
new file mode 100644
index 00000000..d6499973
--- /dev/null
+++ b/AsbCloudInfrastructure.Tests/MapData/DataSaubStatDrillingQualityDtoMap.cs
@@ -0,0 +1,16 @@
+using AsbCloudApp.Data;
+using CsvHelper.Configuration;
+
+namespace AsbCloudInfrastructure.Tests.MapData
+{
+ public class DataSaubStatDrillingQualityDtoMap : ClassMap
+ {
+ public DataSaubStatDrillingQualityDtoMap()
+ {
+ Map(m => m.IdTelemetry).Name("id_telemetry");
+ Map(m => m.DepthStart).Name("depth_start");
+ Map(m => m.DepthEnd).Name("depth_end");
+ Map(m => m.DepthDrillingQuality).Name("depth_drilling_quality");
+ }
+ }
+}
diff --git a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/TelemetryDataSaubMap.cs b/AsbCloudInfrastructure.Tests/MapData/TelemetryDataSaubMap.cs
similarity index 92%
rename from AsbCloudInfrastructure.Tests/Services/DataSaubStat/TelemetryDataSaubMap.cs
rename to AsbCloudInfrastructure.Tests/MapData/TelemetryDataSaubMap.cs
index aa23cf94..9b679a55 100644
--- a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/TelemetryDataSaubMap.cs
+++ b/AsbCloudInfrastructure.Tests/MapData/TelemetryDataSaubMap.cs
@@ -1,13 +1,7 @@
using AsbCloudApp.Data.SAUB;
using CsvHelper.Configuration;
-using AsbCloudInfrastructure.Services;
-using CsvHelper.Configuration.Attributes;
-using Mapster;
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Text.Json.Serialization;
-namespace AsbCloudDb.Model
+namespace AsbCloudInfrastructure.Tests.MapData
{
public class TelemetryDataSaubMap : ClassMap
{
diff --git a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/DataSaubStatDtillingQualityServiceTest.cs b/AsbCloudInfrastructure.Tests/Services/DataSaubStat/DataSaubStatDtillingQualityServiceTest.cs
index 99818138..8e9485f5 100644
--- a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/DataSaubStatDtillingQualityServiceTest.cs
+++ b/AsbCloudInfrastructure.Tests/Services/DataSaubStat/DataSaubStatDtillingQualityServiceTest.cs
@@ -1,21 +1,21 @@
using AsbCloudApp.Data;
-using AsbCloudApp.Data.DetectedOperation;
using AsbCloudApp.Data.SAUB;
using AsbCloudApp.Repositories;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
using AsbCloudDb.Model;
using AsbCloudInfrastructure.Services;
-using AsbCloudInfrastructure.Services.SAUB;
+using AsbCloudInfrastructure.Tests.MapData;
using CsvHelper;
using Mapster;
using NSubstitute;
using System;
using System.Collections.Generic;
-using System.Formats.Asn1;
using System.Globalization;
using System.IO;
using System.Linq;
+using System.Net.NetworkInformation;
+using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
@@ -25,323 +25,77 @@ namespace AsbCloudInfrastructure.Tests.Services;
public class DataSaubStatDtillingQualityServiceTest
{
private const string UsingTemplateFile = "AsbCloudInfrastructure/Tests/Services/DataSaubStat";
- private readonly int Gap = 5;
private readonly IDataSaubStatRepository dataSaubStatRepositoryMock = Substitute.For>();
private readonly ITelemetryDataCache telemetryDataCacheMock = Substitute.For>();
- private readonly IDetectedOperationRepository detectedOperationRepositoryMock = Substitute.For();
private readonly ITelemetryDataSaubService dataSaubServiceMock = Substitute.For();
private DataSaubStatDrillingQualityService dataSaubStatService;
- private int[] idTelemetries = [1];
- private IEnumerable dataSaubStatDrillingQualityDtos = new List()
- {
- new DataSaubStatDrillingQualityDto {
- Id = 1,
- DateEnd = DateTime.UtcNow,
- DateStart = DateTime.UtcNow.AddHours(-1),
- DepthEnd = 2,
- DepthStart = 1,
- IdFeedRegulator = 1,
- IdTelemetry = 1
- },
- new DataSaubStatDrillingQualityDto {
- Id = 2,
- DateEnd = DateTime.UtcNow,
- DateStart = DateTime.UtcNow.AddHours(-1),
- DepthEnd = 3,
- DepthStart = 2,
- IdFeedRegulator = 2,
- IdTelemetry = 2,
- },
- new DataSaubStatDrillingQualityDto {
- Id = 3,
- DateEnd = DateTime.UtcNow,
- DateStart = DateTime.UtcNow.AddHours(-1),
- DepthEnd = 4,
- DepthStart = 3,
- IdFeedRegulator = 3,
- IdTelemetry = 3,
- },
- };
-
-
- private List telemetryDataSaubDtos = new List {
- new TelemetryDataSaubDto()
- {
- IdTelemetry = 1,
- DateTime = DateTime.UtcNow.AddMinutes(-30),
- AxialLoad = 800,
- AxialLoadLimitMax = 1,
- AxialLoadSp = 1,
- BitDepth = 1,
- BlockPosition = 1,
- BlockPositionMax = 1,
- BlockPositionMin = 1,
- BlockSpeed = 1,
- BlockSpeedSp = 1,
- BlockSpeedSpDevelop = 1,
- BlockSpeedSpRotor = 1,
- BlockSpeedSpSlide = 1,
- Flow = 1,
- FlowDeltaLimitMax = 1,
- FlowIdle = 1,
- HookWeight = 1,
- HookWeightIdle = 1,
- HookWeightLimitMax = 1,
- HookWeightLimitMin = 1,
- IdFeedRegulator = 1,
- IdUser = 1,
- Mode = 1,
- Mse = 1,
- MseState = 1,
- Pressure = 1,
- PressureDeltaLimitMax = 1,
- PressureIdle = 1,
- PressureSp = 1,
- PressureSpDevelop = 1,
- PressureSpRotor = 1,
- PressureSpSlide = 1,
- Pump0Flow = 1,
- Pump1Flow = 1,
- Pump2Flow = 1,
- RotorSpeed = 1,
- RotorTorque = 1,
- RotorTorqueIdle = 1,
- RotorTorqueSp = 1,
- RotorTorqueLimitMax = 1,
- WellDepth = 800,
- }
- };
-
public DataSaubStatDtillingQualityServiceTest()
{
- telemetryDataCacheMock
- .GetIds(Arg.Any())
- .Returns(idTelemetries);
-
- dataSaubStatRepositoryMock
- .GetLastsAsync(Arg.Any(), Arg.Any())
- .Returns(dataSaubStatDrillingQualityDtos);
-
dataSaubStatService = new DataSaubStatDrillingQualityService(
dataSaubStatRepositoryMock,
telemetryDataCacheMock,
dataSaubServiceMock);
}
- private TelemetryDataSaubDto CreateTelemetryDataSaubItem(
- TelemetryDataSaubDto telemetrySaubDto,
- float wellDepth,
- float bitDepth,
- short idFeedRegulator,
- DateTime dateTime)
- {
- var telemetrySaubDto1 = telemetrySaubDto.Adapt();
- telemetrySaubDto1.WellDepth = wellDepth;
- telemetrySaubDto1.BitDepth = bitDepth;
- telemetrySaubDto1.IdFeedRegulator = idFeedRegulator;
- telemetrySaubDto1.DateTime = dateTime;
-
- return telemetrySaubDto1;
- }
[Fact]
- public async Task Create_1DataSaubStatItems_ShouldReturn__Success()
+ public async Task Create_DataSaubStatDrillingQuality_From_CSVFile_Test1_ShouldReturn_Success()
{
- var telemetryDataSaubDtos2 = new List();
- string fileName = @"C:\Users\admin\source\repos\AsbCloudServer\AsbCloudInfrastructure.Tests\Services\DataSaubStat\test.csv";
- using (var reader = new StreamReader(fileName))
+ var resourceName = Assembly.GetExecutingAssembly()
+ .GetManifestResourceNames()
+ .Where(r => r.Contains("DataSaubStat.test1.csv"))
+ .FirstOrDefault();
+
+ if (String.IsNullOrEmpty(resourceName))
+ Assert.Fail("No mock data for test");
+
+ using var stream = Assembly.GetExecutingAssembly()
+ .GetManifestResourceStream(resourceName)!;
+
+ var actual = Enumerable.Empty();
+
+ using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
- try
- {
- csv.Context.RegisterClassMap();
- var records = csv.GetRecords().ToList();
+ csv.Context.RegisterClassMap();
+ var records = csv.GetRecords().ToList();
-
-
- dataSaubServiceMock
+ dataSaubServiceMock
.Get(Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any(), Arg.Any())
.Returns(records);
- //act
- var result = await dataSaubStatService.CreateStatDrillingQualityForTelemetry(1, DateTimeOffset.UnixEpoch, CancellationToken.None);
-
- //assert
- Assert.Equal(3, result.Count());
- }
- catch (Exception ex)
- {
- ;
- }
+ //act
+ actual = await dataSaubStatService.CreateStatDrillingQualityForTelemetry(1, DateTimeOffset.UnixEpoch, CancellationToken.None);
}
- //var telemetrySaubDto = telemetryDataSaubDtos.FirstOrDefault();
- //if (telemetrySaubDto != null)
- //{
- // //idFeedRegulator depthWell
- // //1 800
- // //1 900
- // //1 1000
- // //1 900
- // //1 1200
- // //1 1300
- // //1 1100
- // //1 1500
- // //2 1600
- // //Ожидаемые результаты для idFeedRegulator:
- // // количество возвращаемых записей = 3
- // // общая глубина = (1000 - 800) + (1300 - 900) + (1600 - 1100) = 1100
- // var telemetrySaubDto1 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 900,
- // bitDepth: 900,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto1);
+ resourceName = Assembly.GetExecutingAssembly()
+ .GetManifestResourceNames()
+ .Where(r => r.Contains("DataSaubStat.test1_result.csv"))
+ .FirstOrDefault();
- // var telemetrySaubDto2 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1000,
- // bitDepth: 1000,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto2);
+ if (String.IsNullOrEmpty(resourceName))
+ Assert.Fail("No mock data for test");
- // var telemetrySaubDto3 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 900,
- // bitDepth: 900,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto3);
+ using var stream2 = Assembly.GetExecutingAssembly()
+ .GetManifestResourceStream(resourceName)!;
- // var telemetrySaubDto4 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1200,
- // bitDepth: 1200,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto4);
+ using (var reader = new StreamReader(stream2))
+ using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
+ {
+ csv.Context.RegisterClassMap();
+ var expected = csv.GetRecords().ToList();
- // var telemetrySaubDto5 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1300,
- // bitDepth: 1300,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto5);
+ Assert.Equal(expected.Count(), actual.Count());
- // var telemetrySaubDto6 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1100,
- // bitDepth: 1100,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto6);
+ var expectedItem = expected.FirstOrDefault()!;
+ var actualItem = actual.FirstOrDefault()!;
- // var telemetrySaubDto7 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1500,
- // bitDepth: 1500,
- // idFeedRegulator: 1,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto7);
-
- // var telemetrySaubDto8 = CreateTelemetryDataSaubItem(
- // telemetrySaubDto,
- // wellDepth: 1600,
- // bitDepth: 1600,
- // idFeedRegulator: 2,
- // dateTime: DateTime.UtcNow.AddMinutes(20));
- // telemetryDataSaubDtos.Add(telemetrySaubDto8);
- //}
-
-
+ Assert.True(Math.Abs(expectedItem.DepthStart - actualItem.DepthStart) < 0.000001);
+ Assert.True(Math.Abs(expectedItem.DepthEnd - actualItem.DepthEnd) < 0.000001);
+ Assert.True(Math.Abs(expectedItem.DepthDrillingQuality - actualItem.DepthDrillingQuality) < 0.000001);
+ }
}
-
- private TelemetryDataSaubDto Convert(TelemetryDataSaub src, double timezoneOffset)
- {
- var mapper = MapsterForUnitTests.GetMapper();
-
- var res = new TelemetryDataSaubDto();
- var dto = mapper.Map(src, res);
- //var telemetryUser = telemetryUserService.GetOrDefault(src.IdTelemetry, src.IdUser ?? int.MinValue);
- dto.User = "dfsdf";
- //telemetryUser?.MakeDisplayName();
- dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset);
- dto.BitDepth = src.BitDepth <= src.WellDepth
- ? src.BitDepth
- : src.WellDepth;
- return dto;
- }
-
-
-
- //[Fact]
- //public async Task Create_2DataSaubStatItems_ShouldReturn__Success()
- //{
- // var insertedDataSaubStatCount = 2;
-
- // var detectedOperationDto = detectedOperationDtos.FirstOrDefault();
- // if (detectedOperationDto != null)
- // {
- // var detectedOperationDto1 = detectedOperationDto.Adapt();
- // detectedOperationDto1.DateStart = DateTimeOffset.UtcNow.AddMinutes(1);
- // detectedOperationDto1.DateEnd = DateTimeOffset.UtcNow.AddHours(1);
-
- // detectedOperationDtos.Add(detectedOperationDto1);
- // }
-
- // var telemetryDataSaubDto = telemetryDataSaubDtos.LastOrDefault();
- // if (telemetryDataSaubDto != null)
- // {
- // var telemetryDataSaubDto1 = telemetryDataSaubDto.Adapt();
- // telemetryDataSaubDto1.DateTime = DateTime.UtcNow.AddMinutes(10);
- // telemetryDataSaubDto1.WellDepth = telemetryDataSaubDto.WellDepth + 1;
-
- // var telemetryDataSaubDto2 = telemetryDataSaubDto.Adapt();
- // telemetryDataSaubDto2.DateTime = DateTime.UtcNow.AddMinutes(20);
- // telemetryDataSaubDto2.WellDepth = telemetryDataSaubDto1.WellDepth + 1;
-
- // var telemetryDataSaubDto3 = telemetryDataSaubDto.Adapt();
- // telemetryDataSaubDto3.DateTime = DateTime.UtcNow.AddMinutes(30);
- // telemetryDataSaubDto3.WellDepth = telemetryDataSaubDto2.WellDepth + 1;
-
- // telemetryDataSaubDtos.Add(telemetryDataSaubDto1);
- // telemetryDataSaubDtos.Add(telemetryDataSaubDto2);
- // telemetryDataSaubDtos.Add(telemetryDataSaubDto3);
- // }
-
- // detectedOperationRepositoryMock
- // .Get(Arg.Any(), Arg.Any())
- // .Returns(detectedOperationDtos);
-
- // dataSaubStatRepositoryMock
- // .InsertRangeAsync(Arg.Any>(), Arg.Any())
- // .Returns(insertedDataSaubStatCount);
-
- // Action action = (message, percent) =>
- // {
- // //assert
- // Assert.NotNull(percent);
- // Assert.InRange(percent.Value, 0.0, 1.0);
- // };
-
- // //act
- // await dataSaubStatService.CreateStatAsync(Gap, action, CancellationToken.None);
-
- // //assert
- // await dataSaubStatRepositoryMock.Received().InsertRangeAsync(
- // Arg.Is>(l => l.Count() == insertedDataSaubStatCount),
- // Arg.Any());
- //}
}
-internal class TestDto
-{
- public int Id { get; set; }
- public string Name { get; set; }
- public int Age { get; set; }
-}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/test.csv b/AsbCloudInfrastructure.Tests/Services/DataSaubStat/test1.csv
similarity index 100%
rename from AsbCloudInfrastructure.Tests/Services/DataSaubStat/test.csv
rename to AsbCloudInfrastructure.Tests/Services/DataSaubStat/test1.csv
diff --git a/AsbCloudInfrastructure.Tests/Services/DataSaubStat/test1_result.csv b/AsbCloudInfrastructure.Tests/Services/DataSaubStat/test1_result.csv
new file mode 100644
index 00000000..64c49983
--- /dev/null
+++ b/AsbCloudInfrastructure.Tests/Services/DataSaubStat/test1_result.csv
@@ -0,0 +1,2 @@
+"id_telemetry","depth_start","depth_end","depth_drilling_quality"
+419,46,251.279998779297,0.0