DD.WellWorkover.Cloud/AsbCloudInfrastructure.Tests/Services/DataSaubStat/DataSaubStatDtillingQualityServiceTest.cs

102 lines
3.9 KiB
C#
Raw Normal View History

using AsbCloudApp.Data;
using AsbCloudApp.Data.SAUB;
using AsbCloudApp.Repositories;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
2024-10-10 15:29:27 +05:00
using AsbCloudDb.Model;
using AsbCloudInfrastructure.Services;
2024-10-14 10:51:39 +05:00
using AsbCloudInfrastructure.Tests.MapData;
2024-10-10 15:29:27 +05:00
using CsvHelper;
using Mapster;
using NSubstitute;
using System;
using System.Collections.Generic;
2024-10-10 15:29:27 +05:00
using System.Globalization;
using System.IO;
using System.Linq;
2024-10-14 10:51:39 +05:00
using System.Net.NetworkInformation;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Xunit;
namespace AsbCloudInfrastructure.Tests.Services;
public class DataSaubStatDtillingQualityServiceTest
{
2024-10-10 15:29:27 +05:00
private const string UsingTemplateFile = "AsbCloudInfrastructure/Tests/Services/DataSaubStat";
private readonly IDataSaubStatRepository<DataSaubStatDrillingQualityDto> dataSaubStatRepositoryMock = Substitute.For<IDataSaubStatRepository<DataSaubStatDrillingQualityDto>>();
private readonly ITelemetryDataCache<TelemetryDataSaubDto> telemetryDataCacheMock = Substitute.For<ITelemetryDataCache<TelemetryDataSaubDto>>();
private readonly ITelemetryDataSaubService dataSaubServiceMock = Substitute.For<ITelemetryDataSaubService>();
private DataSaubStatDrillingQualityService dataSaubStatService;
public DataSaubStatDtillingQualityServiceTest()
{
dataSaubStatService = new DataSaubStatDrillingQualityService(
dataSaubStatRepositoryMock,
telemetryDataCacheMock,
dataSaubServiceMock);
}
[Fact]
2024-10-14 10:51:39 +05:00
public async Task Create_DataSaubStatDrillingQuality_From_CSVFile_Test1_ShouldReturn_Success()
{
2024-10-14 10:51:39 +05:00
var resourceName = Assembly.GetExecutingAssembly()
.GetManifestResourceNames()
.Where(r => r.Contains("DataSaubStat.test1.csv"))
.FirstOrDefault();
if (String.IsNullOrEmpty(resourceName))
Assert.Fail("No mock data for test");
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
using var stream = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(resourceName)!;
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
var actual = Enumerable.Empty<DataSaubStatDrillingQualityDto>();
using (var reader = new StreamReader(stream))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Context.RegisterClassMap<TelemetryDataSaubMap>();
var records = csv.GetRecords<TelemetryDataSaubDto>().ToList();
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
dataSaubServiceMock
2024-10-10 15:29:27 +05:00
.Get(Arg.Any<int>(), Arg.Any<bool>(), Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<int>(), Arg.Any<CancellationToken>())
.Returns(records);
2024-10-14 10:51:39 +05:00
//act
actual = await dataSaubStatService.CreateStatDrillingQualityForTelemetry(1, DateTimeOffset.UnixEpoch, CancellationToken.None);
2024-10-10 15:29:27 +05:00
}
2024-10-14 10:51:39 +05:00
resourceName = Assembly.GetExecutingAssembly()
.GetManifestResourceNames()
.Where(r => r.Contains("DataSaubStat.test1_result.csv"))
.FirstOrDefault();
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
if (String.IsNullOrEmpty(resourceName))
Assert.Fail("No mock data for test");
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
using var stream2 = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(resourceName)!;
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
using (var reader = new StreamReader(stream2))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Context.RegisterClassMap<DataSaubStatDrillingQualityDtoMap>();
var expected = csv.GetRecords<DataSaubStatDrillingQualityDto>().ToList();
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
Assert.Equal(expected.Count(), actual.Count());
2024-10-14 10:51:39 +05:00
var expectedItem = expected.FirstOrDefault()!;
var actualItem = actual.FirstOrDefault()!;
2024-10-10 15:29:27 +05:00
2024-10-14 10:51:39 +05:00
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);
}
}
2024-10-10 15:29:27 +05:00
}