diff --git a/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj b/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj index 63153bee..4cf2783e 100644 --- a/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj +++ b/AsbCloudWebApi.Tests/AsbCloudWebApi.Tests.csproj @@ -15,6 +15,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/AsbCloudWebApi.Tests/Middlware/UserConnectionsLimitMiddlwareTest.cs b/AsbCloudWebApi.Tests/Middlware/UserConnectionsLimitMiddlwareTest.cs index b118e179..17a14ab1 100644 --- a/AsbCloudWebApi.Tests/Middlware/UserConnectionsLimitMiddlwareTest.cs +++ b/AsbCloudWebApi.Tests/Middlware/UserConnectionsLimitMiddlwareTest.cs @@ -48,6 +48,11 @@ namespace AsbCloudWebApi.Tests.Middlware throw new NotImplementedException(); } + public DatesRangeDto? GetRange(int idWell, DateTimeOffset start, DateTimeOffset end) + { + throw new NotImplementedException(); + } + public Task GetRangeAsync(int idWell, DateTimeOffset start, DateTimeOffset end, CancellationToken token) { throw new NotImplementedException(); diff --git a/AsbCloudWebApi.Tests/ServicesTests/BackgroundWorkerServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/BackgroundWorkerServiceTest.cs deleted file mode 100644 index f4a03f2f..00000000 --- a/AsbCloudWebApi.Tests/ServicesTests/BackgroundWorkerServiceTest.cs +++ /dev/null @@ -1,244 +0,0 @@ -using Microsoft.Extensions.DependencyInjection; -using Moq; -using System; -using AsbCloudInfrastructure.Background; -using System.Threading; -using System.Threading.Tasks; -using Xunit; - -namespace AsbCloudWebApi.Tests.ServicesTests -{ - public class BackgroundWorkerTest - { - private readonly Mock mockServiceProvider; - private readonly Mock mockServiceScopeFactory; - private readonly Func someAction = (string id, IServiceProvider scope, CancellationToken token) => Task.CompletedTask; - - public BackgroundWorkerTest() - { - var mockServiceScope = new Mock(); - mockServiceScopeFactory = new Mock(); - mockServiceProvider = new Mock(); - - mockServiceScope.SetReturnsDefault(mockServiceProvider.Object); - mockServiceProvider.SetReturnsDefault(mockServiceScopeFactory.Object); - mockServiceProvider.Setup(s => s.GetService(It.IsAny())) - .Returns(mockServiceScopeFactory.Object); - mockServiceScopeFactory.SetReturnsDefault(mockServiceScope.Object); - } - - [Fact] - public void Contains_returns_true() - { - mockServiceScopeFactory.Invocations.Clear(); - - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - const string work1Id = "long name 1"; - const string work2Id = "long name 2"; - - var work1 = new WorkBase(work1Id, someAction); - var work2 = new WorkPeriodic(work2Id, someAction, TimeSpan.Zero); - - BackgroundWorker.Push(work1); - BackgroundWorker.Push(work2); - - Assert.True(BackgroundWorker.Contains(work1Id)); - Assert.True(BackgroundWorker.Contains(work2Id)); - Assert.False(BackgroundWorker.Contains(work2Id + work1Id)); - Assert.False(BackgroundWorker.Contains(string.Empty)); - } - - [Fact] - public async Task Push_makes_new_scope_after_start() - { - mockServiceScopeFactory.Invocations.Clear(); - - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var work = new WorkBase("", someAction); - BackgroundWorker.Push(work); - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(10); - - mockServiceScopeFactory.Verify(f => f.CreateScope()); - } - - [Fact] - public async Task Makes_primary_work_done() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var workDone = false; - var work = new WorkBase("", (_, _, _) => - { - workDone = true; - return Task.CompletedTask; - }); - BackgroundWorker.Push(work); - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(10); - - Assert.True(workDone); - } - - [Fact] - public async Task Sets_ExecutionTime_after_work_done() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var work = new WorkBase("", someAction); - BackgroundWorker.Push(work); - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(10); - - Assert.True(work.LastExecutionTime > TimeSpan.Zero); - } - - [Fact] - public async Task Makes_periodic_work_done() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var workDone = false; - var work = new WorkPeriodic("", (_, _, _) => - { - workDone = true; - return Task.CompletedTask; - }, - TimeSpan.FromMilliseconds(10)); - BackgroundWorker.Push(work); - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(20); - - Assert.True(workDone); - } - - [Fact] - public async Task Does_not_start_periodic_work() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var workDone = false; - var work = new WorkPeriodic("", (_, _, _) => - { - workDone = true; - return Task.CompletedTask; - }, - TimeSpan.FromSeconds(30)) - { - LastStart = DateTime.Now - }; - BackgroundWorker.Push(work); - - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(20); - - Assert.False(workDone); - } - - [Fact] - public async Task Follows_work_priority() - { - var order = 0; - var work1Order = -1; - var work2Order = -1; - - var work1 = new WorkPeriodic("1", (_, _, _) => - { - work1Order = order++; - return Task.CompletedTask; - }, - TimeSpan.FromMilliseconds(1) - ); - - var work2 = new WorkBase("2", (_, _, _) => - { - work2Order = order++; - return Task.CompletedTask; - }); - - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - BackgroundWorker.Push(work2); - BackgroundWorker.Push(work1); - - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(2_100); - - Assert.True(work2Order < work1Order); - } - - [Fact] - public async Task Runs_second_after_delete_first() - { - var workDone = false; - - var work1 = new WorkBase("1", someAction); - var work2 = new WorkPeriodic("2", (_, _, _) => - { - workDone = true; - return Task.CompletedTask; - }, TimeSpan.FromMilliseconds(1)); - - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - BackgroundWorker.Push(work1); - BackgroundWorker.Push(work2); - BackgroundWorker.Delete("1"); - - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(10); - - Assert.True(workDone); - } - - [Fact] - public async Task Aborts_long_work() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var workCanceled = false; - var work = new WorkBase("", async (_, _, token) => await Task.Delay(1000000, token)) - { - Timeout = TimeSpan.FromMilliseconds(1), - OnErrorAsync = async (id, ex, token) => - { - workCanceled = ex is System.TimeoutException; - await Task.CompletedTask; - } - }; - - BackgroundWorker.Push(work); - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(20 * 4); - - Assert.True(workCanceled); - } - - [Fact] - public async Task Execution_continues_after_work_exception() - { - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - var work2done = false; - var work1 = new WorkBase("1", (_, _, _) => throw new Exception()); - var work2 = new WorkBase("2", (_, _, _) => - { - work2done = true; - return Task.CompletedTask; - }); - - BackgroundWorker.Push(work1); - BackgroundWorker.Push(work2); - - await BackgroundWorker.StartAsync(CancellationToken.None); - await Task.Delay(2_100); - - Assert.True(work2done); - } - - [Fact] - public void Push_not_unique_id_should_throw() - { - var work1 = new WorkPeriodic("1", someAction, TimeSpan.FromSeconds(30)); - var work2 = new WorkBase("1", someAction); - - var BackgroundWorker = new BackgroundWorker(mockServiceProvider.Object); - BackgroundWorker.Push(work1); - - Assert.Throws( - () => BackgroundWorker.Push(work2)); - } - } -} diff --git a/AsbCloudWebApi.Tests/ServicesTests/DrillingProgramServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/DrillingProgramServiceTest.cs index 54f5d19c..f0ccd6c5 100644 --- a/AsbCloudWebApi.Tests/ServicesTests/DrillingProgramServiceTest.cs +++ b/AsbCloudWebApi.Tests/ServicesTests/DrillingProgramServiceTest.cs @@ -366,7 +366,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests var state = await service.GetStateAsync(idWell, publisher1.Id, CancellationToken.None); Assert.Equal(2, state.IdState); - backgroundWorkerMock.Verify(s => s.Push(It.IsAny())); + backgroundWorkerMock.Verify(s => s.WorkStore.RunOnceQueue.Enqueue(It.IsAny())); } [Fact] diff --git a/AsbCloudWebApi.Tests/ServicesTests/WellboreServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/WellboreServiceTest.cs new file mode 100644 index 00000000..77f94b84 --- /dev/null +++ b/AsbCloudWebApi.Tests/ServicesTests/WellboreServiceTest.cs @@ -0,0 +1,43 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Data.SAUB; +using AsbCloudApp.Repositories; +using AsbCloudApp.Requests; +using AsbCloudApp.Services; +using AsbCloudInfrastructure.Repository; +using AsbCloudInfrastructure.Services.SAUB; +using NSubstitute; +using Org.BouncyCastle.Asn1.Ocsp; +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 WellboreServiceTest + { + + public WellboreServiceTest() + { + var wellService = Substitute.For(); + wellService.GetAsync(Arg.Any(), Arg.Any()) + .Returns(Enumerable.Empty()); + + var wellOperationRepository = Substitute.For(); + wellOperationRepository.GetSectionsAsync(Arg.Any>(), Arg.Any()) + .Returns(Enumerable.Empty()); + + var telemetryDataCache = Substitute.For>(); + telemetryDataCache.GetOrDefaultFirstLast(Arg.Any()); + } + + [Fact] + public async Task GetWellboresAsync() + { + + } + } +}