using Elsa.Activities.IntegrationTests.Primitives.Workflows;
using Elsa.Testing.Shared;
using Elsa.Workflows;
using Elsa.Workflows.Activities;
using Elsa.Workflows.State;
using Xunit.Abstractions;
namespace Elsa.Activities.IntegrationTests.Primitives;
///
/// Integration tests for the activity.
///
public class FinishTests(ITestOutputHelper testOutputHelper)
{
private readonly WorkflowTestFixture _fixture = new WorkflowTestFixture(testOutputHelper)
.AddWorkflow();
[Fact(DisplayName = "Finish terminates workflow and prevents subsequent activities from executing")]
public async Task Finish_TerminatesWorkflowAndPreventsSubsequentActivities()
{
// Act
var workflowState = await _fixture.RunWorkflowAsync(FinishInSequenceWorkflow.DefinitionId);
// Assert
AssertWorkflowFinished(workflowState);
var lines = _fixture.CapturingTextWriter.Lines.ToList();
Assert.Contains("Before Finish", lines);
Assert.DoesNotContain("After Finish", lines);
}
private static void AssertWorkflowFinished(WorkflowState workflowState)
{
Assert.Equal(WorkflowStatus.Finished, workflowState.Status);
Assert.Equal(WorkflowSubStatus.Finished, workflowState.SubStatus);
}
}