< Summary

Information
Class: Elsa.Workflows.Runtime.Providers.ClrWorkflowsProvider
Assembly: Elsa.Workflows.Runtime
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Providers/ClrWorkflowsProvider.cs
Line coverage
100%
Covered lines: 26
Uncovered lines: 0
Coverable lines: 26
Total lines: 50
Line coverage: 100%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Name()100%11100%
<GetWorkflowsAsync()100%11100%
GetWorkflowsAsync()100%11100%
BuildWorkflowAsync()62.5%88100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Workflows.Runtime/Providers/ClrWorkflowsProvider.cs

#LineLine coverage
 1using Elsa.Workflows.Management.Materializers;
 2using Elsa.Workflows.Runtime.Features;
 3using Elsa.Workflows.Runtime.Options;
 4using JetBrains.Annotations;
 5using Microsoft.Extensions.Options;
 6
 7namespace Elsa.Workflows.Runtime.Providers;
 8
 9/// <summary>
 10/// Provides workflows to the system that are registered with <see cref="WorkflowRuntimeFeature"/>
 11/// </summary>
 12[UsedImplicitly]
 37313public class ClrWorkflowsProvider(
 37314    IOptions<RuntimeOptions> options,
 37315    IWorkflowBuilderFactory workflowBuilderFactory,
 37316    IServiceProvider serviceProvider) : IWorkflowsProvider
 17{
 18    /// <inheritdoc />
 668419    public string Name => "CLR";
 20
 21    /// <inheritdoc />
 22    public async ValueTask<IEnumerable<MaterializedWorkflow>> GetWorkflowsAsync(CancellationToken cancellationToken = de
 23    {
 434624        var buildWorkflowTasks = options.Value.Workflows.Values.Select(async x => await BuildWorkflowAsync(x, cancellati
 36225        var workflowDefinitions = await Task.WhenAll(buildWorkflowTasks);
 36226        return workflowDefinitions;
 36227    }
 28
 29    private async Task<MaterializedWorkflow> BuildWorkflowAsync(Func<IServiceProvider, ValueTask<IWorkflow>> workflowFac
 30    {
 398431        var builder = workflowBuilderFactory.CreateBuilder();
 398432        var workflowBuilder = await workflowFactory(serviceProvider);
 398433        var workflowBuilderType = workflowBuilder.GetType();
 398434        await workflowBuilder.BuildAsync(builder, cancellationToken);
 398435        var workflow = await builder.BuildWorkflowAsync(cancellationToken);
 398436        var versionSuffix = $"v{workflow.Version}";
 398437        var definitionId = string.IsNullOrEmpty(workflow.Identity.DefinitionId) ? workflowBuilderType.Name : $"{workflow
 398438        var id = string.IsNullOrEmpty(workflow.Identity.Id) ? $"{workflowBuilderType.Name}:{versionSuffix}" : $"{workflo
 39
 398440        workflow.Identity = workflow.Identity with
 398441        {
 398442            Id = id,
 398443            DefinitionId = definitionId,
 398444            TenantId = workflow.Identity.TenantId
 398445        };
 46
 398447        var materializerContext = new ClrWorkflowMaterializerContext(workflowBuilder.GetType());
 398448        return new(workflow, Name, ClrWorkflowMaterializer.MaterializerName, materializerContext);
 398449    }
 50}