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

42 lines
1.6 KiB
C#

using NodePipeline.Engine.CodeGeneration.Abstractions;
using NodePipeline.Engine.DependencyInjection.CodeGeneration;
using NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures;
namespace NodePipeline.Engine.Tests.CodeGeneratorTests;
public class DiNodeFactoryGeneratorTests
{
[Fact]
public void InitializeNodeFactoriesMethod_ShouldExistInGeneratedCode()
{
var methodSignature = "private void InitializeNodeFactories()";
var model = TestNodeModelFactory.CreateMultipleNodesModel();
var generatedCode = NodeFactoryGenerator.Generate(model);
Assert.Contains(methodSignature, generatedCode);
}
[Fact]
public void InitializeNodeFactoriesMethod_ContainsFactoryRegistrations()
{
var model = TestNodeModelFactory.CreateMultipleNodesModel();
var methodName = "InitializeNodeFactories";
var generatedCode = NodeFactoryGenerator.Generate(model);
var methodCode = TestHelper.ExtractMethod(generatedCode, methodName);
foreach (var node in model.Nodes)
{
if (node.HasParameterlessConstructor)
continue;
var nodeName = NodeGeneratorHelper.GetNodeName(node);
var expected = "_nodeFactory.NodeFactories.Add(" + Environment.NewLine
+ $" {nodeName}," + Environment.NewLine
+ $" () => _serviceProvider.GetRequiredService<{node.TypeNameFull}>())";
Assert.Contains(expected, methodCode);
}
}
}