< Summary

Information
Class: Elsa.Platform.Integration.Steps.VerifyCapabilitiesStep
Assembly: Elsa.Platform.Integration
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Platform.Integration/Steps/VerifyCapabilitiesStep.cs
Line coverage
68%
Covered lines: 13
Uncovered lines: 6
Coverable lines: 19
Total lines: 44
Line coverage: 68.4%
Branch coverage
64%
Covered branches: 9
Total branches: 14
Branch coverage: 64.2%
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_Features()100%11100%
get_Capabilities()100%11100%
ValidateAsync(...)64.28%251461.53%
ExecuteAsync(...)100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Platform.Integration/Steps/VerifyCapabilitiesStep.cs

#LineLine coverage
 1using Elsa.Features.Contracts;
 2using Elsa.Platform.Integration.Options;
 3using Loom;
 4using Microsoft.Extensions.Options;
 5
 6namespace Elsa.Platform.Integration.Steps;
 7
 8[Step("elsa.verify-capabilities")]
 19public sealed class VerifyCapabilitiesStep(
 110    IInstalledFeatureProvider installedFeatureProvider,
 111    IOptions<ElsaPlatformIntegrationOptions> options) : IStep, IValidatingStep
 12{
 113    public List<string>? Features { get; init; }
 14
 215    public List<string>? Capabilities { get; init; }
 16
 17    public ValueTask<IReadOnlyList<RecipeDiagnostic>> ValidateAsync(
 18        StepValidationContext context,
 19        CancellationToken cancellationToken = default)
 20    {
 121        List<RecipeDiagnostic> diagnostics = [];
 122        var installedFeatures = installedFeatureProvider.List().ToList();
 223        foreach (var feature in Features ?? [])
 24        {
 025            var exists = installedFeatures.Any(x =>
 026                string.Equals(x.Name, feature, StringComparison.OrdinalIgnoreCase)
 027                || string.Equals(x.FullName, feature, StringComparison.OrdinalIgnoreCase));
 028            if (!exists)
 029                diagnostics.Add(context.Error("ELSA_PLATFORM_FEATURE_MISSING", $"Required feature '{feature}' is not ins
 30        }
 31
 132        var runtimeCapabilities = options.Value.Capabilities;
 433        foreach (var capability in Capabilities ?? [])
 34        {
 135            if (!runtimeCapabilities.Contains(capability, StringComparer.OrdinalIgnoreCase))
 136                diagnostics.Add(context.Error("ELSA_PLATFORM_CAPABILITY_MISSING", $"Required runtime capability '{capabi
 37        }
 38
 139        return ValueTask.FromResult<IReadOnlyList<RecipeDiagnostic>>(diagnostics);
 40    }
 41
 42    public ValueTask ExecuteAsync(StepContext context, CancellationToken cancellationToken = default) =>
 043        ValueTask.CompletedTask;
 44}