#7053070 Перенос справочника бурильщиков в репозиторий

This commit is contained in:
ai.astrakhantsev 2022-10-19 15:31:53 +05:00
parent 1f5867e4b3
commit dd469a0f9a
5 changed files with 67 additions and 69 deletions

View File

@ -1,12 +0,0 @@
using AsbCloudApp.Data;
namespace AsbCloudApp.Services
{
/// <summary>
/// Сервис добавления бурильщиков
/// </summary>
public interface IDrillerService : ICrudService<DrillerDto>
{
}
}

View File

@ -129,7 +129,7 @@ namespace AsbCloudInfrastructure
services.AddTransient<IScheduleReportService, ScheduleReportService>(); services.AddTransient<IScheduleReportService, ScheduleReportService>();
services.AddTransient<IDailyReportService, DailyReportService>(); services.AddTransient<IDailyReportService, DailyReportService>();
services.AddTransient<IDetectedOperationService, DetectedOperationService>(); services.AddTransient<IDetectedOperationService, DetectedOperationService>();
services.AddTransient<IDrillerService, DrillerService>(); //services.AddTransient<IDrillerService, DrillerService>();
services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>(); services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>();
services.AddTransient<IScheduleRepository, ScheduleRepository>(); services.AddTransient<IScheduleRepository, ScheduleRepository>();
@ -160,6 +160,12 @@ namespace AsbCloudInfrastructure
dbSet => dbSet dbSet => dbSet
.Include(c => c.Wells) .Include(c => c.Wells)
.Include(c => c.Deposit))); // может быть включен в сервис ClusterService .Include(c => c.Deposit))); // может быть включен в сервис ClusterService
services.AddTransient<ICrudService<DrillerDto>, CrudServiceBase<DrillerDto, Driller>>(s =>
new CrudCacheServiceBase<DrillerDto, Driller>(
s.GetService<IAsbCloudDbContext>(),
dbSet => dbSet));
services.AddTransient<IFileRepository, FileRepository>(); services.AddTransient<IFileRepository, FileRepository>();
services.AddTransient<IFileStorageRepository, FileStorageRepository>(); services.AddTransient<IFileStorageRepository, FileStorageRepository>();
// Subsystem service // Subsystem service

View File

@ -1,14 +0,0 @@
using AsbCloudApp.Data;
using AsbCloudApp.Services;
using AsbCloudDb.Model;
using AsbCloudInfrastructure.Repository;
namespace AsbCloudInfrastructure.Services
{
public class DrillerService : CrudServiceBase<DrillerDto, Driller>, IDrillerService
{
public DrillerService(IAsbCloudDbContext context) : base(context)
{
}
}
}

View File

@ -1,7 +1,12 @@
using AsbCloudApp.Data; using AsbCloudApp.Data;
using AsbCloudApp.Repositories;
using AsbCloudApp.Services;
using AsbCloudDb.Model; using AsbCloudDb.Model;
using AsbCloudInfrastructure.Repository;
using AsbCloudInfrastructure.Services; using AsbCloudInfrastructure.Services;
using AsbCloudInfrastructure.Services.Cache; using AsbCloudInfrastructure.Services.Cache;
using Moq;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -11,31 +16,49 @@ namespace AsbCloudWebApi.Tests.ServicesTests
{ {
public class DrillerServiceTest public class DrillerServiceTest
{ {
private readonly AsbCloudDbContext context; private static List<DrillerDto> Drillers = new List<DrillerDto> {
private readonly CacheDb cacheDb; new DrillerDto
private Driller driller = new Driller {
{ Id = 1,
Id = 1, Name = "Тестовый",
Name = "Тестовый", Patronymic = "Тест",
Patronymic = "Тест", Surname = "Тестович"
Surname = "Тестович" },
new DrillerDto
{
Id = 1,
Name = "Тестовый",
Patronymic = "Тест",
Surname = "Тестович"
}
}; };
private DrillerDto drillerObj = new DrillerDto private ICrudService<DrillerDto> service;
{
Id = 0,
Name = "Тестовый",
Patronymic = "Тест",
Surname = "Тестович"
};
private DrillerService service;
public DrillerServiceTest() public DrillerServiceTest()
{ {
var repositoryMock = RepositoryFactory.Make<ICrudService<DrillerDto>, DrillerDto>(Drillers);
context = TestHelpter.MakeTestContext(); repositoryMock.Setup(x => x.GetAllAsync(It.IsAny<CancellationToken>()))
cacheDb = new CacheDb(); .Returns(() => {
context.SaveChanges(); var data = Drillers;
service = new DrillerService(context); return Task.FromResult(data.AsEnumerable());
});
repositoryMock.Setup(x => x.InsertAsync(It.IsAny<DrillerDto>(), It.IsAny<CancellationToken>()))
.Returns((DrillerDto dto, CancellationToken token) => {
Drillers.Add(dto);
return Task.FromResult(Drillers.Count());
});
repositoryMock.Setup(x => x.UpdateAsync(It.IsAny<DrillerDto>(), It.IsAny<CancellationToken>()))
.Returns((DrillerDto dto, CancellationToken token) => {
var baseDto = Drillers.First(x => x.Id == dto.Id);
Drillers.Remove(baseDto);
Drillers.Add(dto);
return Task.FromResult(Drillers.Count());
});
service = repositoryMock.Object;
} }
~DrillerServiceTest() ~DrillerServiceTest()
@ -45,36 +68,31 @@ namespace AsbCloudWebApi.Tests.ServicesTests
[Fact] [Fact]
public async Task GetListAsync_count() public async Task GetListAsync_count()
{ {
var data = await service.GetAllAsync(CancellationToken.None);
///Добавляем элемент Assert.Equal(2, data.Count());
var id = await service.InsertAsync(drillerObj, CancellationToken.None);
id = await service.InsertAsync(drillerObj, CancellationToken.None);
id = await service.InsertAsync(drillerObj, CancellationToken.None);
var newCount = (await service.GetAllAsync(CancellationToken.None)).Count();
Assert.Equal(3, newCount);
} }
[Fact] [Fact]
public async Task InsertAsync_returns_id() public async Task InsertAsync_returns_id()
{ {
var id = await service.InsertAsync(drillerObj, CancellationToken.None); var dto = new DrillerDto {
Assert.NotEqual(0, id); Id = 3,
Name = "Тестовый",
Patronymic = "Тест",
Surname = "Тестович"
};
var cnt = await service.InsertAsync(dto, CancellationToken.None);
Assert.Equal(3, cnt);
} }
[Fact] [Fact]
public async Task UpdateAsync_not_add_if_exists() public async Task UpdateAsync_not_add_if_exists()
{ {
///Добавляем элемент var dto = Drillers.First(x => x.Id == 1);
context.Drillers.Add(driller); dto.Name = "Edit";
var oldCount = (await service.GetAllAsync(CancellationToken.None)).Count();
//Обновляем var cnt = await service.UpdateAsync(dto, CancellationToken.None);
drillerObj.Id = driller.Id; Assert.Equal(2, cnt);
drillerObj.Name = "Исправлено";
await service.UpdateAsync(drillerObj, CancellationToken.None);
var newCount = (await service.GetAllAsync(CancellationToken.None)).Count();
Assert.Equal(newCount, oldCount);
} }
} }
} }

View File

@ -11,10 +11,10 @@ namespace AsbCloudWebApi.Controllers
[Route("api/driller")] [Route("api/driller")]
[ApiController] [ApiController]
[Authorize] [Authorize]
public class DrillerController : CrudController<DrillerDto, IDrillerService> public class DrillerController : CrudController<DrillerDto, ICrudService<DrillerDto>>
{ {
public DrillerController(IDrillerService drillerService) public DrillerController(ICrudService<DrillerDto> service)
: base(drillerService) : base(service)
{ } { }
} }
} }