42 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
} |