elsa-core/test/unit/Elsa.Activities.UnitTests/Primitives/FinishTests.cs
Sipke Schoorstra 4ee8f6912d
Add unit and integration tests for the Finish activity to validate termination behavior (#7110) (#7114)
* Add unit and integration tests for the `Finish` activity to validate termination behavior (#7110)

- Added `FinishInSequenceWorkflow` to test `Finish` activity in a sequence workflow configuration.
- Introduced integration tests (`FinishTests`) to confirm `Finish` terminates workflows and skips subsequent activities.
- Developed unit tests to verify activity completion and workflow status transitions to `Finished`.

* Update test/integration/Elsa.Activities.IntegrationTests/Primitives/Workflows/FinishInSequenceWorkflow.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update test/integration/Elsa.Activities.IntegrationTests/Primitives/Workflows/FinishInSequenceWorkflow.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add `Finish` activity unit test to verify ITerminalNode implementation

* Add code coverage report generation and GitHub Pages deployment workflow

- Removed unused `tempvalidator` project and its associated files.
- Updated GitHub Actions workflow to include steps for generating code coverage reports in HTML format using `dotnet-reportgenerator-globaltool`.
- Added deployment of coverage reports to GitHub Pages for the `main` branch.
- Updated `.gitignore` to exclude test results and artifacts.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-27 20:51:59 +01:00

52 lines
1.3 KiB
C#

using Elsa.Testing.Shared;
using Elsa.Workflows;
namespace Elsa.Activities.UnitTests.Primitives;
/// <summary>
/// Unit tests for the <see cref="Finish"/> activity.
/// </summary>
public class FinishTests
{
[Fact(DisplayName = "Finish implements ITerminalNode interface")]
public void Finish_ImplementsITerminalNode()
{
// Arrange
var finish = new Finish();
// Assert
Assert.IsAssignableFrom<ITerminalNode>(finish);
}
[Fact(DisplayName = "Finish completes successfully")]
public async Task Should_Complete_Successfully()
{
// Arrange
var finish = new Finish();
// Act
var context = await ExecuteAsync(finish);
// Assert
Assert.Equal(ActivityStatus.Completed, context.Status);
}
[Fact(DisplayName = "Finish transitions workflow to Finished substatus")]
public async Task Should_Transition_Workflow_To_Finished()
{
// Arrange
var finish = new Finish();
// Act
var context = await ExecuteAsync(finish);
// Assert
Assert.Equal(WorkflowSubStatus.Finished, context.WorkflowExecutionContext.SubStatus);
}
private static async Task<ActivityExecutionContext> ExecuteAsync(IActivity activity)
{
return await new ActivityTestFixture(activity).ExecuteAsync();
}
}