< Summary

Information
Class: Elsa.AI.Host.Tools.Workflows.WorkflowToolBase
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Workflows/WorkflowToolBase.cs
Line coverage
85%
Covered lines: 18
Uncovered lines: 3
Coverable lines: 21
Total lines: 46
Line coverage: 85.7%
Branch coverage
70%
Covered branches: 7
Total branches: 10
Branch coverage: 70%
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_ServiceProvider()100%11100%
get_Formatter()100%11100%
get_WorkflowDefinitionStore()100%11100%
WorkflowStoreUnavailable()100%210%
IsTenantAllowed(...)100%11100%
CreateDefinitionFilter(...)75%8885.71%
NormalizeTenant(...)50%22100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Tools/Workflows/WorkflowToolBase.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Models;
 2using Elsa.AI.Host.Services;
 3using Elsa.AI.Host.Tools;
 4using Elsa.Common.Models;
 5using Elsa.Workflows.Management;
 6using Elsa.Workflows.Management.Entities;
 7using Elsa.Workflows.Management.Filters;
 8
 9namespace Elsa.AI.Host.Tools.Workflows;
 10
 22611public abstract class WorkflowToolBase(IServiceProvider serviceProvider, AIGroundingResultFormatter formatter) : Groundi
 12{
 22813    protected IServiceProvider ServiceProvider { get; } = serviceProvider;
 22814    protected AIGroundingResultFormatter Formatter { get; } = formatter;
 215    protected IWorkflowDefinitionStore? WorkflowDefinitionStore => ServiceProvider.GetService(typeof(IWorkflowDefinition
 16
 17    protected AIToolResult WorkflowStoreUnavailable() =>
 018        Formatter.Unavailable("Workflow definition store");
 19
 20    protected static bool IsTenantAllowed(WorkflowDefinition definition, string? tenantId) =>
 221        string.Equals(NormalizeTenant(definition.TenantId), NormalizeTenant(tenantId), StringComparison.Ordinal);
 22
 23    protected static WorkflowDefinitionFilter CreateDefinitionFilter(JsonObject arguments)
 24    {
 225        var filter = new WorkflowDefinitionFilter
 226        {
 227            Id = GetString(arguments, "versionId") ?? GetString(arguments, "id"),
 228            DefinitionId = GetString(arguments, "definitionId"),
 229            SearchTerm = GetString(arguments, "query") ?? GetString(arguments, "searchTerm"),
 230            Name = GetString(arguments, "name")
 231        };
 32
 233        var version = GetInt(arguments, "version");
 234        if (version != null)
 035            filter.VersionOptions = VersionOptions.SpecificVersion(version.Value);
 236        else if (GetBool(arguments, "published") == true)
 037            filter.VersionOptions = VersionOptions.Published;
 38        else
 239            filter.VersionOptions = VersionOptions.Latest;
 40
 241        return filter;
 42    }
 43
 44    protected static string NormalizeTenant(string? tenantId) =>
 445        string.IsNullOrWhiteSpace(tenantId) ? "" : tenantId;
 46}