fix(template-engine): resolve TemplateEngine-011,013,014 — remove dead converter, duplicate-id-safe cycle detection, unified deletion logic; TemplateEngine-012 deferred
This commit is contained in:
@@ -122,11 +122,13 @@ public class TemplateServiceTests
|
||||
_repoMock.Setup(r => r.GetTemplateByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(template);
|
||||
_repoMock.Setup(r => r.GetInstancesByTemplateIdAsync(1, It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Instance> { new Instance("Pump1") { Id = 1, TemplateId = 1, SiteId = 1 } });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template> { template });
|
||||
|
||||
var result = await _service.DeleteTemplateAsync(1, "admin");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("referenced by", result.Error);
|
||||
Assert.Contains("instance(s) reference it", result.Error);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -143,7 +145,7 @@ public class TemplateServiceTests
|
||||
var result = await _service.DeleteTemplateAsync(1, "admin");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("inherited by", result.Error);
|
||||
Assert.Contains("child template(s) inherit from it", result.Error);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -162,7 +164,36 @@ public class TemplateServiceTests
|
||||
var result = await _service.DeleteTemplateAsync(1, "admin");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("composed by", result.Error);
|
||||
Assert.Contains("template(s) compose it", result.Error);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task DeleteTemplate_MultipleConstraints_ReportsAllNotJustFirst()
|
||||
{
|
||||
// TemplateEngine-014: DeleteTemplateAsync delegates its constraint check
|
||||
// to the single TemplateDeletionService implementation, which accumulates
|
||||
// every blocking reason instead of returning on the first failing category.
|
||||
var template = new Template("Busy") { Id = 1 };
|
||||
var composer = new Template("Composer") { Id = 3 };
|
||||
composer.Compositions.Add(new TemplateComposition("Module") { Id = 1, TemplateId = 3, ComposedTemplateId = 1 });
|
||||
|
||||
_repoMock.Setup(r => r.GetTemplateByIdAsync(1, It.IsAny<CancellationToken>())).ReturnsAsync(template);
|
||||
_repoMock.Setup(r => r.GetInstancesByTemplateIdAsync(1, It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Instance> { new Instance("Inst1") { Id = 1, TemplateId = 1, SiteId = 1 } });
|
||||
_repoMock.Setup(r => r.GetAllTemplatesAsync(It.IsAny<CancellationToken>()))
|
||||
.ReturnsAsync(new List<Template>
|
||||
{
|
||||
template,
|
||||
new Template("Child") { Id = 2, ParentTemplateId = 1 },
|
||||
composer
|
||||
});
|
||||
|
||||
var result = await _service.DeleteTemplateAsync(1, "admin");
|
||||
|
||||
Assert.True(result.IsFailure);
|
||||
Assert.Contains("instance(s) reference it", result.Error);
|
||||
Assert.Contains("child template(s) inherit from it", result.Error);
|
||||
Assert.Contains("template(s) compose it", result.Error);
|
||||
}
|
||||
|
||||
// ========================================================================
|
||||
|
||||
Reference in New Issue
Block a user