elsa-core/src/common/Elsa.Testing.Shared/ActivityExecutionContextExtensions.cs
Sipke Schoorstra f7b7ea4d73
Add unit tests for FlowFork activity and enhance test utilities (#6995)
* Add unit tests for `FlowFork` activity and enhance test utilities

- Introduce `FlowForkTests` to validate activity behavior with various branch configurations.
- Extend `ActivityExecutionContextExtensions` with methods to retrieve and check outcomes.
- Modify `ActivityTestFixture` to ensure activities transition to `Running` status before execution.

* Apply suggestion from @Copilot

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

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-21 15:31:31 +02:00

32 lines
1.4 KiB
C#

using Elsa.Workflows;
namespace Elsa.Testing.Shared;
/// <summary>
/// Provides extension methods for <see cref="ActivityExecutionContext"/> to enhance its functionality.
/// </summary>
public static class ActivityExecutionContextExtensions
{
/// <summary>
/// Determines whether the specified activity is scheduled in the workflow execution context.
/// </summary>
/// <param name="activityExecutionContext">The activity execution context instance used for checking the scheduled activity.</param>
/// <param name="activity">The activity to check for scheduling.</param>
/// <returns>True if the specified activity is scheduled; otherwise, false.</returns>
public static bool HasScheduledActivity(this ActivityExecutionContext activityExecutionContext, IActivity activity)
{
return activityExecutionContext.WorkflowExecutionContext.Scheduler.Find(x => x.Activity == activity) != null;
}
public static IEnumerable<string> GetOutcomes(this ActivityExecutionContext activityExecutionContext)
{
if (activityExecutionContext.JournalData.TryGetValue("Outcomes", out var outcomesObj) && outcomesObj is string[] outcomes)
return outcomes;
return [];
}
public static bool HasOutcome(this ActivityExecutionContext activityExecutionContext, string outcome)
{
return activityExecutionContext.GetOutcomes().Contains(outcome);
}
}