feat(dal,templateMatcher): UnitFilterService переписан, теперь при подсчете количества связей для групп работ зонтик учитываются relationshipFilter. В TemplateMatcher добавлено изменение имени Unused шаблонов в конце имени добавляется DateTimeOffset.UtcNow.ToUnixTimeSeconds() для уникальности неиспользуемых шаблонов. Актуализированы unit-тесты

This commit is contained in:
Mikhail Kuznetsov
2025-12-15 11:50:12 +10:00
parent 03683a13d3
commit 8da4f226a7
9 changed files with 429 additions and 223 deletions

View File

@@ -0,0 +1,52 @@
using Microsoft.Extensions.Logging;
using MockQueryable;
using Moq;
using PARR.DAL.Contracts;
using PARR.DAL.DomainServices.Implementations;
using PARR.DAL.DomainServices.Interfaces;
using PARR.DAL.Models.Job;
using PARR.DAL.Models.Unit;
using PARR.DAL.Services.Interfaces.Job;
using PARR.DAL.Services.Interfaces.Unit;
namespace PARR.DAL.Tests.DomainServices.Implementations
{
public class ShortcodesServiceTests
{
private readonly Mock<ILogger<ShortcodesService>> loggerMock = new();
private readonly Mock<SettingsFromDb> settingsMock = new();
private readonly Mock<IJobService> jobServiceMock = new();
private readonly Mock<IUnitService> unitServiceMock = new();
private readonly Mock<IUnitInValueService> unitInValueServiceMock = new();
private readonly Mock<IUnitFieldService> unitFieldServiceMock = new();
private readonly Mock<IUnitFilterService> unitFilterServiceMock = new();
private ShortcodesService CreateService()
=> new(loggerMock.Object, settingsMock.Object, jobServiceMock.Object,
unitServiceMock.Object, unitFilterServiceMock.Object,
unitInValueServiceMock.Object, unitFieldServiceMock.Object);
[Fact]
public async Task ApplyShortcodesAsync_WithEc_ShouldReplaceEc()
{
// Arrange
var unitId = Guid.NewGuid();
var jobId = Guid.NewGuid();
var unit = new Unit { Id = unitId, Name = "Сервер_01" };
var job = new Job { Id = jobId, Name = "SAN ТО-1 Проверка работы фабрики SAN", TemplateNameMask = "%ЭК%", WorkGroupMask = "", WorkName = "Аудит" };
// ✅ БЕЗ .Object — ключевое!
unitServiceMock.Setup(x => x.Get()).Returns(new[] { unit }.BuildMock());
jobServiceMock.Setup(x => x.Get()).Returns(new[] { job }.BuildMock());
var service = CreateService();
// Act
var result = await service.ApplyShortcodesAsync("%ЭК%", unitId, jobId);
// Assert
Assert.Equal("Сервер_01", result);
}
}
}