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