Merge pull request '#7053070 Перенос справочника бурильщиков в репозиторий' (#8) from feature/driller_repository into dev

Reviewed-on: http://46.146.209.148:8080/DDrilling/AsbCloudServer/pulls/8
This commit is contained in:
Никита Фролов 2022-10-19 16:00:35 +05:00
commit 25cd263598
5 changed files with 65 additions and 70 deletions

View File

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

View File

@ -128,7 +128,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>();
@ -159,6 +159,9 @@ 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>, CrudCacheServiceBase<DrillerDto, Driller>>();
services.AddTransient<IFileRepository, FileRepository>(); services.AddTransient<IFileRepository, FileRepository>();
services.AddTransient<IFileStorageRepository, FileStorageRepository>(); services.AddTransient<IFileStorageRepository, FileStorageRepository>();
services.AddTransient<IWellCompositeRepository, WellCompositeRepository>(); services.AddTransient<IWellCompositeRepository, WellCompositeRepository>();

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 oldCount = Drillers.Count();
var count = await service.UpdateAsync(dto, CancellationToken.None);
//Обновляем Assert.Equal(oldCount, count);
drillerObj.Id = driller.Id;
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)
{ } { }
} }
} }