using AsbCloudApp.Requests; using AsbCloudDb.Model; using AsbCloudDb.Model.ProcessMaps; using AsbCloudWebApi.IntegrationTests.Clients; using Org.BouncyCastle.Asn1.Ocsp; using System.Net; using System.Net.Http.Headers; using Xunit; namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan; public class ProcessMapReportDrillingControllerTest : BaseIntegrationTest { private readonly WellSectionType wellSection = new WellSectionType() { Id = 1, Caption = "Секция 1", Order = 1 }; private readonly WellOperationCategory wellOperationCategory = new WellOperationCategory() { Id = 1, IdParent = null, KeyValueName = "Name", Name = "Name" }; private readonly WellOperation wellOperation = new WellOperation() { CategoryInfo = "CategoryInfo", Id = 10, Comment = "Comment", DateStart = DateTimeOffset.UtcNow, DepthEnd = 1, DepthStart = 0.6, DurationHours = 10, IdCategory = 1, IdPlan = null, IdType = 1, IdUser = 1, IdWell = 1, IdWellSectionType = 1, LastUpdateDate = DateTimeOffset.UtcNow }; private readonly List dataSaubStats = new List() { new DataSaubStat() { AxialLoad = 0, AxialLoadLimitMax = 10, AxialLoadSp = 8, BlockSpeedSp = 50.0, DateEnd = DateTimeOffset.UtcNow.AddMinutes(40), DateStart = DateTimeOffset.UtcNow.AddMinutes(30), DepthEnd = 85.99299621582031, DepthStart = 85.9260025024414, EnabledSubsystems = 0, Flow = 10, HasOscillation = true, Id = 1, IdCategory = 1, IdFeedRegulator = 0, IdTelemetry = 1, Pressure = 24, PressureIdle = 0, PressureSp = 40, RotorSpeed = 11.3, RotorTorque = 1, RotorTorqueLimitMax = 26.5, RotorTorqueSp = 5, Speed = 80.3924560546875 }, new DataSaubStat() { AxialLoad = 2, AxialLoadLimitMax = 10.0, AxialLoadSp = 8, BlockSpeedSp = 20, DateEnd = DateTimeOffset.UtcNow.AddMinutes(30), DateStart = DateTimeOffset.UtcNow.AddMinutes(20), DepthEnd = 86.28099822998047, DepthStart = 86.21900177001953, EnabledSubsystems = 1, Flow = 20, HasOscillation = true, Id = 2, IdCategory = 1, IdFeedRegulator = 1, IdTelemetry = 1, Pressure = 30, PressureIdle = 20, PressureSp = 40, RotorSpeed = 11.251153300212916, RotorTorque = 7, RotorTorqueLimitMax = 26.5, RotorTorqueSp = 9, Speed = 74.395751953125 }, new DataSaubStat() { AxialLoad = 4, AxialLoadLimitMax = 15.0, AxialLoadSp = 8, BlockSpeedSp = 110.0, DateEnd = DateTimeOffset.UtcNow.AddMinutes(20), DateStart = DateTimeOffset.UtcNow.AddMinutes(10), DepthEnd = 106.7490005493164, DepthStart = 106.47899627685547, EnabledSubsystems = 1, Flow = 30, HasOscillation = true, Id = 3, IdCategory = 1, IdFeedRegulator = 1, IdTelemetry = 1, Pressure = 36, PressureIdle = 23.0, PressureSp = 63.0, RotorSpeed = 11.334207942999628, RotorTorque = 14, RotorTorqueLimitMax = 15.0, RotorTorqueSp = 13, Speed = 108.001708984375 } }; private readonly ProcessMapPlanDrilling entity = new() { Id = 0, IdAuthor = 1, IdEditor = null, Creation = DateTimeOffset.UtcNow, Obsolete = null, IdState = AsbCloudDb.Model.ChangeLogAbstract.IdStateActual, IdPrevious = null, IdWell = 1, IdWellSectionType = 1, DepthStart = 0.5, DepthEnd = 1.5, IdMode = 1, AxialLoadPlan = 2.718281, AxialLoadLimitMax = 3.1415926, DeltaPressurePlan = 4, DeltaPressureLimitMax = 5, TopDriveTorquePlan = 6, TopDriveTorqueLimitMax = 7, TopDriveSpeedPlan = 8, TopDriveSpeedLimitMax = 9, FlowPlan = 10, FlowLimitMax = 11, RopPlan = 12, UsageSaub = 13, UsageSpin = 14, Comment = "это тестовая запись", }; private IProcessMapReportDrilling client; public ProcessMapReportDrillingControllerTest(WebAppFactoryFixture factory) : base(factory) { client = factory.GetAuthorizedHttpClient(string.Empty); } [Fact] public async Task Get_rtk_report_by_default_request_returns_success() { //arrange dbContext.CleanupDbSet(); var dbset = dbContext.Set(); dbset.Add(entity); entity.Id = 1; dbset.Add(entity); entity.Id = 2; dbset.Add(entity); var dbSetWellOperationCategory = dbContext.Set(); dbSetWellOperationCategory.Add(wellOperationCategory); var dbSetWellOperation = dbContext.Set(); dbSetWellOperation.Add(wellOperation); var dbSetDataSaubStat = dbContext.Set(); dbSetDataSaubStat.AddRange(dataSaubStats); dbContext.SaveChanges(); //act var request = new DataSaubStatRequest(); var response = await client.GetReportAsync(1, request, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Equal(dataSaubStats.Count() - 1, response.Content.Count()); } [Fact] public async Task Get_rtk_report_by_parametrize_request_returns_success() { //arrange dbContext.CleanupDbSet(); var dbset = dbContext.Set(); dbset.Add(entity); entity.Id = 1; dbset.Add(entity); entity.Id = 2; dbset.Add(entity); var dbSetWellOperationCategory = dbContext.Set(); dbSetWellOperationCategory.Add(wellOperationCategory); var dbSetWellOperation = dbContext.Set(); dbSetWellOperation.Add(wellOperation); var dbSetDataSaubStat = dbContext.Set(); dbSetDataSaubStat.AddRange(dataSaubStats); dbContext.SaveChanges(); //act var request = new DataSaubStatRequest() { DeltaAxialLoad = 5, DeltaPressure = 15, DeltaRotorTorque = 10 }; var response = await client.GetReportAsync(1, request, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.NotNull(response.Content); Assert.Equal(1, response.Content.Count()); } [Fact] public async Task Get_rtk_report_returns_BadRequest() { //arrange dbContext.CleanupDbSet(); var dbset = dbContext.Set(); dbset.Add(entity); entity.Id = 1; dbset.Add(entity); entity.Id = 2; dbset.Add(entity); var dbSetWellOperationCategory = dbContext.Set(); dbSetWellOperationCategory.Add(wellOperationCategory); var dbSetWellOperation = dbContext.Set(); dbSetWellOperation.Add(wellOperation); var dbSetDataSaubStat = dbContext.Set(); dbSetDataSaubStat.AddRange(dataSaubStats); dbContext.SaveChanges(); //act var request = new DataSaubStatRequest() { DeltaAxialLoad = 15, DeltaPressure = 25, DeltaRotorTorque = 20 }; var response = await client.GetReportAsync(1, request, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); } [Fact] public async Task Export_rtk_report_returns_success() { //clear dbContext.CleanupDbSet(); //arrange var dbset = dbContext.Set(); dbset.Add(entity); entity.Id = 1; dbset.Add(entity); entity.Id = 2; dbset.Add(entity); var dbSetWellOperationCategory = dbContext.Set(); dbSetWellOperationCategory.Add(wellOperationCategory); var dbSetWellOperation = dbContext.Set(); dbSetWellOperation.Add(wellOperation); var dbSetDataSaubStat = dbContext.Set(); dbSetDataSaubStat.AddRange(dataSaubStats); dbContext.SaveChanges(); //act var request = new DataSaubStatRequest(); var response = await client.ExportReportAsync(1, request, CancellationToken.None); //assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal("application/octet-stream", response.ContentHeaders?.ContentType?.MediaType); Assert.True(response.ContentHeaders?.ContentLength > 0); } }