< Summary

Information
Class: Elsa.Expressions.JavaScript.Providers.VariableTypeDefinitionProvider
Assembly: Elsa.Expressions.JavaScript
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Expressions.JavaScript/Providers/VariableTypeDefinitionProvider.cs
Line coverage
100%
Covered lines: 18
Uncovered lines: 0
Coverable lines: 18
Total lines: 41
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetTypeDefinitions()100%22100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Expressions.JavaScript/Providers/VariableTypeDefinitionProvider.cs

#LineLine coverage
 1using System.Dynamic;
 2using Elsa.Extensions;
 3using Elsa.Expressions.JavaScript.TypeDefinitions.Abstractions;
 4using Elsa.Expressions.JavaScript.TypeDefinitions.Contracts;
 5using Elsa.Expressions.JavaScript.TypeDefinitions.Models;
 6using Elsa.Workflows.Management.Options;
 7using JetBrains.Annotations;
 8using Microsoft.Extensions.Options;
 9
 10namespace Elsa.Expressions.JavaScript.Providers;
 11
 12/// <summary>
 13/// Produces <see cref="TypeDefinition"/>s for variable types.
 14/// </summary>
 15[UsedImplicitly]
 416internal class VariableTypeDefinitionProvider(ITypeDescriber typeDescriber, IOptions<ManagementOptions> options) : TypeD
 17{
 18    protected override IEnumerable<TypeDefinition> GetTypeDefinitions(TypeDefinitionContext context)
 19    {
 120        var excludedTypes = new Func<Type, bool>[]
 121        {
 1022            type => type == typeof(ExpandoObject),
 923            type => type.IsPrimitive,
 924            type => type.ContainsGenericParameters,
 925            type => type.IsGenericType && type.GetGenericTypeDefinition() == typeof(IDictionary<,>),
 726            type => type == typeof(object),
 627            type => type == typeof(string)
 128        };
 29
 130        var variableTypes =
 131            from variableDescriptor in options.Value.VariableDescriptors
 2132            let variableType = variableDescriptor.Type
 7133            where (variableType.IsClass || variableType.IsInterface || variableType.IsEnum) && !excludedTypes.Any(x => x
 634            select variableType;
 35
 1236        foreach (var variableType in variableTypes.Distinct())
 37        {
 538            yield return typeDescriber.DescribeType(variableType);
 39        }
 140    }
 41}