diff --git a/AsbCloudApp/Data/LimitingParameterDataDto.cs b/AsbCloudApp/Data/LimitingParameterDataDto.cs index 03bb2318..ee957947 100644 --- a/AsbCloudApp/Data/LimitingParameterDataDto.cs +++ b/AsbCloudApp/Data/LimitingParameterDataDto.cs @@ -1,9 +1,4 @@ using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace AsbCloudApp.Data { diff --git a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs index 1d6e59f2..6a8853c5 100644 --- a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs +++ b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs @@ -3,6 +3,7 @@ using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -21,29 +22,37 @@ namespace AsbCloudInfrastructure.Repository } public async Task> GetStatOrDefaultAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token) { - var query = BuildQuery(request, wellDto); + try + { + var query = BuildQuery(request, wellDto); - if (query is null) + if (query is null) + return Enumerable.Empty(); + + var data = (await query.ToListAsync(token)) + .Select(x => new LimitingParameterDataDto + { + IdWell = wellDto.Id, + IdTelemetry = x.IdTelemetry, + IdFeedRegulator = x.IdFeedRegulator, + DateStart = x.DateStart, + DateEnd = x.DateEnd, + DepthStart = x.DepthStart, + DepthEnd = x.DepthEnd + }); + + return data; + } + catch (Exception e) + { return Enumerable.Empty(); - - var data = (await query.ToListAsync(token)) - .Select(x => new LimitingParameterDataDto { - IdWell = wellDto.Id, - IdTelemetry = x.IdTelemetry, - IdFeedRegulator = x.IdFeedRegulator, - DateStart = x.DateStart, - DateEnd = x.DateEnd, - DepthStart = x.DepthStart, - DepthEnd = x.DepthEnd - }); - - return data; + } } private IQueryable BuildQuery(LimitingParameterRequest request, WellDto wellDto) { var query = context.LimitingParameter - .OrderBy(x => x.Id) + //.OrderBy(x => x.Id) .Where(x => x.IdTelemetry == wellDto.IdTelemetry) .AsNoTracking(); diff --git a/AsbCloudInfrastructure/Services/LimitingParameterService.cs b/AsbCloudInfrastructure/Services/LimitingParameterService.cs index 7109153f..b86e2da3 100644 --- a/AsbCloudInfrastructure/Services/LimitingParameterService.cs +++ b/AsbCloudInfrastructure/Services/LimitingParameterService.cs @@ -2,7 +2,6 @@ using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudApp.Services; -using AsbCloudDb.Model; using System; using System.Collections.Generic; using System.Linq; diff --git a/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs new file mode 100644 index 00000000..d29520df --- /dev/null +++ b/AsbCloudWebApi.Tests/ServicesTests/LimitingParameterServiceTest.cs @@ -0,0 +1,93 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using AsbCloudInfrastructure.Repository; +using AsbCloudInfrastructure.Services; +using Moq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Xunit; + +namespace AsbCloudWebApi.Tests.ServicesTests +{ + public class LimitingParameterServiceTest + { + private readonly Mock dbMock; + private readonly ILimitingParameterRepository limitingParameterRepository; + private readonly Mock wellServiceMock; + private readonly LimitingParameterService limitingParameterService; + + private readonly WellDto[] wellDtos = new WellDto[] { + new WellDto { + Id = 64, + IdTelemetry = 139, + Timezone = new SimpleTimezoneDto { + Hours = 5, + IsOverride = false + } + } + }; + + private readonly LimitingParameter[] limitingParametersData = new LimitingParameter[] { + new LimitingParameter{ + IdTelemetry = 139, + IdFeedRegulator = 1, + DateStart = DateTimeOffset.Parse("2022-01-02T10:00:00.286Z"), + DateEnd = DateTimeOffset.Parse("2022-01-12T10:00:00.286Z"), + DepthStart = 1000, + DepthEnd = 2000 + }, + new LimitingParameter{ + IdTelemetry = 139, + IdFeedRegulator = 1, + DateStart = DateTimeOffset.Parse("2022-01-12T10:00:00.286Z"), + DateEnd = DateTimeOffset.Parse("2022-01-14T10:00:00.286Z"), + DepthStart = 2000, + DepthEnd = 2500 + }, + new LimitingParameter{ + IdTelemetry = 139, + IdFeedRegulator = 1, + DateStart = DateTimeOffset.Parse("2022-01-14T10:00:00.286Z"), + DateEnd = DateTimeOffset.Parse("2022-01-18T10:00:00.286Z"), + DepthStart = 2500, + DepthEnd = 4000 + } + }; + + private readonly LimitingParameterRequest limitingParameterRequest = new LimitingParameterRequest { + IdWell = 64, + GtDate = DateTime.Parse("2022-01-08T10:00:00.286Z"), + LtDate = DateTime.Parse("2022-01-15T10:00:00.286Z") + }; + + public LimitingParameterServiceTest() + { + dbMock = new Mock(); + dbMock.AddDbSetMock(limitingParametersData); + limitingParameterRepository = new LimitingParameterRepository(dbMock.Object); + + wellServiceMock = new Mock(); + wellServiceMock.Setup(x => x.GetOrDefaultAsync(It.IsAny(), It.IsAny())) + .Returns((int idWell, CancellationToken token) => { + var data = wellDtos.FirstOrDefault(x => x.Id == idWell); + return Task.FromResult(data); + }); + + limitingParameterService = new LimitingParameterService(limitingParameterRepository, wellServiceMock.Object); + } + + [Fact] + public async Task GetList() + { + var data = await limitingParameterService.GetStatOrDefaultAsync(limitingParameterRequest, CancellationToken.None); + Assert.NotNull(data); + } + } +}