using Elsa.Workflows;
using Elsa.Workflows.Models;
using Elsa.Workflows.Options;
using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
namespace Elsa.Testing.Shared;
///
/// Provides extension methods for .
///
[PublicAPI]
public static class RunActivityExtensions
{
///
/// Runs the specified activity.
///
/// The service provider.
/// The activity to run.
/// An optional cancellation token.
/// The result of running the activity.
public static async Task RunActivityAsync(this IServiceProvider services, IActivity activity, CancellationToken cancellationToken = default)
{
await services.PopulateRegistriesAsync();
var workflowRunner = services.GetRequiredService();
var result = await workflowRunner.RunAsync(activity, cancellationToken: cancellationToken);
return result;
}
///
/// Runs the specified activity.
///
/// The service provider.
/// The activity to run.
/// An set of options.
/// An optional cancellation token.
/// The result of running the activity.
public static async Task RunActivityAsync(this IServiceProvider services, IActivity activity, RunWorkflowOptions options, CancellationToken cancellationToken = default)
{
await services.PopulateRegistriesAsync();
var workflowRunner = services.GetRequiredService();
var result = await workflowRunner.RunAsync(activity, options, cancellationToken);
return result;
}
}