using NodePipeline.Abstractions.Attributes;
using NodePipeline.Abstractions.Interfaces.Nodes;
using NodePipeline.Abstractions.Models;
using NodePipeline.Engine.CodeGeneration.Abstractions.Models;
using NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures.TestEnums;

namespace NodePipeline.Engine.Tests.CodeGeneratorTests.Fixtures.MockNodes;

public class OneEnumParameterNode : INode
{
    [NodeField(FieldDirection.Parameter)] public NodeField<Enum4> Parameter { get; set; } = null!;

    public void Execute()
    {
        throw new NotImplementedException();
    }

    internal static NodeDescriptor GetDescriptor()
    {
        return new NodeDescriptor(nameof(OneEnumParameterNode), false, typeof(OneEnumParameterNode).FullName!,
            typeof(OneEnumParameterNode).FullName!,
            [
                new NodeFieldDescriptor(nameof(Parameter), nameof(Parameter), typeof(Enum4).FullName!, false, false,
                    true,
                    FieldDirection.Parameter, null)
            ], true, null);
    }
}