perf(templateengine): alarm-override, folder-delete and template-delete checks read lean template projections (review 2026-10-21 04/P6, 08/P1)
InstanceService.SetAlarmOverrideAsync and TemplateDeletionService move to the no-tracking, body-free GetAllTemplatesForAnalysisAsync; TemplateFolderService counts folder contents from GetTemplateStubsAsync.
This commit is contained in:
+13
-9
@@ -3,6 +3,7 @@ using ZB.MOM.WW.ScadaBridge.Commons.Entities.Templates;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Repositories;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Interfaces.Services;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums;
|
||||
using ZB.MOM.WW.ScadaBridge.Commons.Types.Templates;
|
||||
using ZB.MOM.WW.ScadaBridge.TemplateEngine.Services;
|
||||
|
||||
namespace ZB.MOM.WW.ScadaBridge.TemplateEngine.Tests.Services;
|
||||
@@ -223,8 +224,8 @@ public class TemplateFolderServiceTests
|
||||
_repoMock.Setup(r => r.GetFolderByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(f);
|
||||
_repoMock.Setup(r => r.GetAllFoldersAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateFolder> { f });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template>());
|
||||
_repoMock.Setup(r => r.GetTemplateStubsAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateStub>());
|
||||
|
||||
var result = await _sut.DeleteFolderAsync(1, "admin");
|
||||
|
||||
@@ -242,8 +243,8 @@ public class TemplateFolderServiceTests
|
||||
_repoMock.Setup(r => r.GetFolderByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(parent);
|
||||
_repoMock.Setup(r => r.GetAllFoldersAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateFolder> { parent, child });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template>());
|
||||
_repoMock.Setup(r => r.GetTemplateStubsAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateStub>());
|
||||
|
||||
var result = await _sut.DeleteFolderAsync(1, "admin");
|
||||
|
||||
@@ -257,17 +258,20 @@ public class TemplateFolderServiceTests
|
||||
public async Task DeleteFolder_HasTemplates_ReturnsFailure_WithCounts()
|
||||
{
|
||||
var f = new TemplateFolder("P") { Id = 1 };
|
||||
var t = new Template("X") { Id = 5, FolderId = 1 };
|
||||
var t = new TemplateStub(5, "X", null, 1, false, null);
|
||||
_repoMock.Setup(r => r.GetFolderByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(f);
|
||||
_repoMock.Setup(r => r.GetAllFoldersAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateFolder> { f });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template> { t });
|
||||
_repoMock.Setup(r => r.GetTemplateStubsAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateStub> { t });
|
||||
|
||||
var result = await _sut.DeleteFolderAsync(1, "admin");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("1 template", result.Error);
|
||||
// Review 2026-10-21 04/P6 + 08/P1: a folder-content count needs only FolderId —
|
||||
// never the tracked, script-bodies-included full template graph.
|
||||
_repoMock.Verify(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()), Times.Never);
|
||||
}
|
||||
|
||||
// ========================================================================
|
||||
@@ -629,8 +633,8 @@ public class TemplateFolderServiceTests
|
||||
_repoMock.Setup(r => r.GetFolderByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(f);
|
||||
_repoMock.Setup(r => r.GetAllFoldersAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateFolder> { f });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template>());
|
||||
_repoMock.Setup(r => r.GetTemplateStubsAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<TemplateStub>());
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user