using FluentAssertions; using NSubstitute; using Scripting.Application.DTOs; using Workflow.Application.BuildFlow.Buttons.Commands; using Workflow.Application.BuildFlow.Buttons.DTOs; using Workflow.Application.BuildFlow.Buttons.Handlers; using Workflow.Application.BuildFlow.Buttons.Services; using Xunit; namespace BuildFlow.Workflow.Tests.BuildFlow; public class ExecuteBuildFlowButtonCommandHandlerTests { [Fact] public async Task ExecuteBuildFlowButton_DelegatesToExecutor() { var executor = Substitute.For(); executor.ExecuteAsync(Arg.Any(), Arg.Any(), Arg.Any()) .Returns(new BuildFlowButtonActionResult(true, new List())); var handler = new ExecuteBuildFlowButtonCommandHandler(executor); var command = new ExecuteBuildFlowButtonCommand(Guid.NewGuid(), "{\"x\":1}"); var result = await handler.Handle(command, CancellationToken.None); result.Should().NotBeNull(); result.Success.Should().BeTrue(); await executor.Received(1).ExecuteAsync(command.ButtonId, command.InputJson, Arg.Any()); } }