forked from ddrilling/AsbCloudServer
Тесты парсинга РТК
This commit is contained in:
parent
f2ca89dc8d
commit
06d3e9851a
@ -22,4 +22,9 @@
|
|||||||
<ProjectReference Include="..\AsbCloudWebApi\AsbCloudWebApi.csproj" />
|
<ProjectReference Include="..\AsbCloudWebApi\AsbCloudWebApi.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Controllers\ProcessMapPlan\Files\ProcessMapPlanDrillingInvalid.xlsx" />
|
||||||
|
<EmbeddedResource Include="Controllers\ProcessMapPlan\Files\ProcessMapPlanDrillingValid.xlsx" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using AsbCloudApp.Data.ProcessMapPlan;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.ProcessMapPlan;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Refit;
|
using Refit;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.IntegrationTests.Clients;
|
namespace AsbCloudWebApi.IntegrationTests.Clients;
|
||||||
@ -32,4 +32,8 @@ public interface IProcessMapPlanDrillingClient
|
|||||||
|
|
||||||
[Put(BaseRoute)]
|
[Put(BaseRoute)]
|
||||||
Task<IApiResponse<int>> UpdateOrInsertRange(int idWell, IEnumerable<ProcessMapPlanDrillingDto> dtos);
|
Task<IApiResponse<int>> UpdateOrInsertRange(int idWell, IEnumerable<ProcessMapPlanDrillingDto> dtos);
|
||||||
|
|
||||||
|
[Multipart]
|
||||||
|
[Post(BaseRoute + "/parse")]
|
||||||
|
Task<IApiResponse<ParserResultDto<ProcessMapPlanDrillingDto>>> Parse(int idWell, [AliasAs("files")] IEnumerable<StreamPart> streams);
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -1,18 +1,20 @@
|
|||||||
using AsbCloudApp.Data.ProcessMapPlan;
|
using AsbCloudApp.Data.ProcessMapPlan;
|
||||||
using AsbCloudApp.Requests;
|
using AsbCloudApp.Requests;
|
||||||
using AsbCloudDb.Model.ProcessMapPlan;
|
using AsbCloudDb.Model.ProcessMapPlan;
|
||||||
using AsbCloudDb.Model.ProcessMaps;
|
|
||||||
using AsbCloudWebApi.IntegrationTests.Clients;
|
using AsbCloudWebApi.IntegrationTests.Clients;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Reflection;
|
||||||
|
using AsbCloudDb.Model.ProcessMaps;
|
||||||
|
using AsbCloudWebApi.IntegrationTests.Data;
|
||||||
|
using Refit;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.IntegrationTests.Controllers;
|
namespace AsbCloudWebApi.IntegrationTests.Controllers.ProcessMapPlan;
|
||||||
|
|
||||||
public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
||||||
{
|
{
|
||||||
private IProcessMapPlanDrillingClient client;
|
|
||||||
private readonly ProcessMapPlanDrillingDto dto = new (){
|
private readonly ProcessMapPlanDrillingDto dto = new (){
|
||||||
Id = 0,
|
Id = 0,
|
||||||
Creation = new(),
|
Creation = new(),
|
||||||
@ -21,11 +23,13 @@ public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
|||||||
IdPrevious = null,
|
IdPrevious = null,
|
||||||
|
|
||||||
IdWell = 1,
|
IdWell = 1,
|
||||||
IdWellSectionType = 1,
|
Section = "Кондуктор",
|
||||||
|
IdWellSectionType = 3,
|
||||||
DepthStart = 0.5,
|
DepthStart = 0.5,
|
||||||
DepthEnd = 1.5,
|
DepthEnd = 1.5,
|
||||||
|
|
||||||
IdMode = 1,
|
IdMode = 1,
|
||||||
|
Mode = "ротор",
|
||||||
AxialLoadPlan = 2.718281,
|
AxialLoadPlan = 2.718281,
|
||||||
AxialLoadLimitMax = 3.1415926,
|
AxialLoadLimitMax = 3.1415926,
|
||||||
DeltaPressurePlan = 4,
|
DeltaPressurePlan = 4,
|
||||||
@ -73,6 +77,8 @@ public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
|||||||
Comment = "это тестовая запись",
|
Comment = "это тестовая запись",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private IProcessMapPlanDrillingClient client;
|
||||||
|
|
||||||
public ProcessMapPlanDrillingControllerTest(WebAppFactoryFixture factory) : base(factory)
|
public ProcessMapPlanDrillingControllerTest(WebAppFactoryFixture factory) : base(factory)
|
||||||
{
|
{
|
||||||
dbContext.CleanupDbSet<ProcessMapPlanDrilling>();
|
dbContext.CleanupDbSet<ProcessMapPlanDrilling>();
|
||||||
@ -109,6 +115,8 @@ public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
|||||||
nameof(ProcessMapPlanDrillingDto.IdState),
|
nameof(ProcessMapPlanDrillingDto.IdState),
|
||||||
nameof(ProcessMapPlanDrillingDto.Author),
|
nameof(ProcessMapPlanDrillingDto.Author),
|
||||||
nameof(ProcessMapPlanDrillingDto.Creation),
|
nameof(ProcessMapPlanDrillingDto.Creation),
|
||||||
|
nameof(ProcessMapPlanDrillingDto.Mode),
|
||||||
|
nameof(ProcessMapPlanDrillingDto.Section)
|
||||||
};
|
};
|
||||||
MatchHelper.Match(expected, actual, excludeProps);
|
MatchHelper.Match(expected, actual, excludeProps);
|
||||||
}
|
}
|
||||||
@ -556,4 +564,59 @@ public class ProcessMapPlanDrillingControllerTest: BaseIntegrationTest
|
|||||||
};
|
};
|
||||||
MatchHelper.Match(expected, actual, excludeProps);
|
MatchHelper.Match(expected, actual, excludeProps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task Parse_returns_success()
|
||||||
|
{
|
||||||
|
//arrange
|
||||||
|
const string fileName = "ProcessMapPlanDrillingValid.xlsx";
|
||||||
|
var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName);
|
||||||
|
|
||||||
|
//act
|
||||||
|
var streamPart = new StreamPart(stream, fileName, "application/octet-stream");
|
||||||
|
var response = await client.Parse(Defaults.Wells[0].Id, new[] { streamPart });
|
||||||
|
|
||||||
|
//assert
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
||||||
|
var parserResult = response.Content;
|
||||||
|
|
||||||
|
Assert.NotNull(parserResult);
|
||||||
|
Assert.Single(parserResult.Item);
|
||||||
|
Assert.True(parserResult.IsValid);
|
||||||
|
|
||||||
|
var row = parserResult.Item.First();
|
||||||
|
var dtoActual = row.Item;
|
||||||
|
|
||||||
|
Assert.True(row.IsValid);
|
||||||
|
|
||||||
|
var excludeProps = new[] { nameof(ProcessMapPlanDrillingDto.IdWell) };
|
||||||
|
MatchHelper.Match(dto, dtoActual, excludeProps);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task Parse_returns_success_for_result_with_warnings()
|
||||||
|
{
|
||||||
|
//arrange
|
||||||
|
const string fileName = "ProcessMapPlanDrillingInvalid.xlsx";
|
||||||
|
var stream = Assembly.GetExecutingAssembly().GetFileCopyStream(fileName);
|
||||||
|
|
||||||
|
//act
|
||||||
|
var streamPart = new StreamPart(stream, fileName, "application/octet-stream");
|
||||||
|
var response = await client.Parse(Defaults.Wells[0].Id, new[] { streamPart });
|
||||||
|
|
||||||
|
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
||||||
|
|
||||||
|
var parserResult = response.Content;
|
||||||
|
|
||||||
|
Assert.NotNull(parserResult);
|
||||||
|
Assert.False(parserResult.IsValid);
|
||||||
|
Assert.Single(parserResult.Warnings);
|
||||||
|
Assert.Single(parserResult.Item);
|
||||||
|
|
||||||
|
var row = parserResult.Item.First();
|
||||||
|
|
||||||
|
Assert.False(row.IsValid);
|
||||||
|
Assert.Equal(2, row.Warnings.Count());
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user