NodePipeline/NodePipeline.Engine.Tests/CodeGeneratorTests/DiNodeValidatorGeneratorTests.cs
2026-01-02 20:55:25 +03:00

42 lines
1.4 KiB
C#

using NodePipeline.Engine.DependencyInjection.CodeGeneration;
using NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures;
namespace NodePipeline.Engine.Tests.CodeGeneratorTests;
public class DiNodeValidatorGeneratorTests
{
[Fact]
public void InitializeNodeValidatorsMethod_ShouldExistInGeneratedCode()
{
var methodSignature = "private void InitializeNodeValidators()";
var model = TestNodeModelFactory.CreateMultipleNodesModel();
var generatedCode = NodeValidatorGenerator.Generate(model);
Assert.Contains(methodSignature, generatedCode);
}
[Fact]
public void InitializeNodeValidatorsMethod_RegistersAllNodeValidators()
{
var model = TestNodeModelFactory.CreateMultipleNodesModel();
var methodName = "InitializeNodeValidators";
var generatedCode = NodeValidatorGenerator.Generate(model);
var methodCode = TestHelper.ExtractMethod(generatedCode, methodName);
var validators = model.Nodes.SelectMany(n => n.CustomValidators);
foreach (var validator in validators)
{
if (validator.CanBeInitialized)
continue;
var expected = $"_validator.NodeValidators.TryAdd(typeof({validator}),";
Assert.Contains(expected, methodCode);
var expectedService = $"_serviceProvider.GetRequiredService<{validator}>()";
Assert.Contains(expectedService, methodCode);
}
}
}