forked from ddrilling/AsbCloudServer
102 lines
3.9 KiB
C#
102 lines
3.9 KiB
C#
using AsbCloudApp.Data;
|
|
using AsbCloudApp.Data.SAUB;
|
|
using AsbCloudApp.Repositories;
|
|
using AsbCloudApp.Requests;
|
|
using AsbCloudApp.Services;
|
|
using AsbCloudDb.Model;
|
|
using AsbCloudInfrastructure.Services;
|
|
using AsbCloudInfrastructure.Tests.MapData;
|
|
using CsvHelper;
|
|
using Mapster;
|
|
using NSubstitute;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
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;
|
|
|
|
namespace AsbCloudInfrastructure.Tests.Services;
|
|
|
|
public class DataSaubStatDtillingQualityServiceTest
|
|
{
|
|
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]
|
|
public async Task Create_DataSaubStatDrillingQuality_From_CSVFile_Test1_ShouldReturn_Success()
|
|
{
|
|
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<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();
|
|
|
|
dataSaubServiceMock
|
|
.Get(Arg.Any<int>(), Arg.Any<bool>(), Arg.Any<DateTimeOffset>(), Arg.Any<DateTimeOffset>(), Arg.Any<int>(), Arg.Any<CancellationToken>())
|
|
.Returns(records);
|
|
|
|
//act
|
|
actual = await dataSaubStatService.CreateStatDrillingQualityForTelemetry(1, DateTimeOffset.UnixEpoch, CancellationToken.None);
|
|
}
|
|
|
|
resourceName = Assembly.GetExecutingAssembly()
|
|
.GetManifestResourceNames()
|
|
.Where(r => r.Contains("DataSaubStat.test1_result.csv"))
|
|
.FirstOrDefault();
|
|
|
|
if (String.IsNullOrEmpty(resourceName))
|
|
Assert.Fail("No mock data for test");
|
|
|
|
using var stream2 = Assembly.GetExecutingAssembly()
|
|
.GetManifestResourceStream(resourceName)!;
|
|
|
|
using (var reader = new StreamReader(stream2))
|
|
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
|
|
{
|
|
csv.Context.RegisterClassMap<DataSaubStatDrillingQualityDtoMap>();
|
|
var expected = csv.GetRecords<DataSaubStatDrillingQualityDto>().ToList();
|
|
|
|
Assert.Equal(expected.Count(), actual.Count());
|
|
|
|
var expectedItem = expected.FirstOrDefault()!;
|
|
var actualItem = actual.FirstOrDefault()!;
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
|