DD.WellWorkover.Cloud/AsbCloudWebApi.IntegrationTests/Controllers/DrillControllerTest.cs

88 lines
2.5 KiB
C#

using AsbCloudApp.Data;
using AsbCloudApp.Requests;
using AsbCloudDb.Model;
using AsbCloudWebApi.IntegrationTests.Clients;
using AsbCloudWebApi.IntegrationTests.Data;
using System;
using Xunit;
namespace AsbCloudWebApi.IntegrationTests.Controllers;
public class DrillerControllerTest : BaseIntegrationTest
{
private readonly IDrillerClient client;
public DrillerControllerTest(WebAppFactoryFixture factory)
: base(factory)
{
client = factory.GetAuthorizedHttpClient<IDrillerClient>(string.Empty);
dbContext.CleanupDbSet<Driller>();
dbContext.CleanupDbSet<Schedule>();
}
[Fact]
public async Task GetByWellIds_returns_success()
{
//arrange
var well1 = CreateWellAsync(2);
var well2 = CreateWellAsync(3);
var well3 = CreateWellAsync(4);
dbContext.Wells.Add(well1);
dbContext.Wells.Add(well2);
dbContext.Wells.Add(well3);
var driller1 = CreateDrillerAsync(1);
var driller2 = CreateDrillerAsync(2);
var driller3 = CreateDrillerAsync(3);
var schedule1= CreateScheduleAsync(well1.Id, driller1);
var schedule2 = CreateScheduleAsync(well2.Id, driller2);
var schedule3 = CreateScheduleAsync(well3.Id, driller3);
dbContext.Schedule.Add(schedule1);
dbContext.Schedule.Add(schedule2);
dbContext.Schedule.Add(schedule3);
await dbContext.SaveChangesAsync();
////act
var idsWells = dbContext.Wells.ToArray().Select(w => w.Id);
var response = await client.GetAsync(idsWells, CancellationToken.None);
////assert
Assert.NotNull(response.Content);
Assert.Equal(3, response.Content.Count());
}
private static Schedule CreateScheduleAsync(int idWell, Driller driller) => new()
{
IdWell = idWell,
ShiftStart = new TimeOnly(8, 0, 0),
ShiftEnd = new TimeOnly(20, 0, 0),
DrillStart = new DateTimeOffset(new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc)),
DrillEnd = new DateTimeOffset(new DateTime(2024, 2, 1, 0, 0, 0, DateTimeKind.Utc)),
Driller = driller
};
private static Well CreateWellAsync(int idWell) => new()
{
Id = idWell,
IdWellType = 1,
IdState = 1,
Caption = $"Скважина {idWell}",
Latitude = 10,
Longitude = 20,
Timezone = Defaults.Timezone,
IdCluster = 1,
};
private static Driller CreateDrillerAsync(int idDriller) => new()
{
Id = idDriller,
Name = idDriller.ToString(),
Patronymic = idDriller.ToString(),
Surname= idDriller.ToString()
};
}