< Summary

Information
Class: Elsa.Tenants.TenantResolverPipelineBuilder
Assembly: Elsa.Tenants
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Tenants/Services/TenantResolutionPipelineBuilder.cs
Line coverage
73%
Covered lines: 11
Uncovered lines: 4
Coverable lines: 15
Total lines: 47
Line coverage: 73.3%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
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_Resolvers()100%210%
Append()100%11100%
Append(...)50%2275%
Clear()100%210%
Build(...)100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Tenants/Services/TenantResolutionPipelineBuilder.cs

#LineLine coverage
 1using Elsa.Common.Multitenancy;
 2using Microsoft.Extensions.DependencyInjection;
 3
 4namespace Elsa.Tenants;
 5
 6/// <inheritdoc />
 7public class TenantResolverPipelineBuilder : ITenantResolverPipelineBuilder
 8{
 109    private readonly ISet<Type> _resolvers = new HashSet<Type>();
 10
 11    /// <inheritdoc />
 012    public IEnumerable<Type> Resolvers => _resolvers.ToList().AsReadOnly();
 13
 14    /// <inheritdoc />
 15    public ITenantResolverPipelineBuilder Append<T>() where T : ITenantResolver
 16    {
 1017        var strategyType = typeof(T);
 1018        return Append(strategyType);
 19    }
 20
 21    /// <inheritdoc />
 22    public ITenantResolverPipelineBuilder Append(Type resolverType)
 23    {
 1024        if (typeof(ITenantResolver).IsAssignableFrom(resolverType) == false)
 025            throw new ArgumentException($"The type {resolverType} does not implement {nameof(ITenantResolver)}.");
 26
 1027        _resolvers.Add(resolverType);
 1028        return this;
 29    }
 30
 31    /// <inheritdoc />
 32    public ITenantResolverPipelineBuilder Clear()
 33    {
 034        _resolvers.Clear();
 035        return this;
 36    }
 37
 38    /// <inheritdoc />
 39    public IEnumerable<ITenantResolver> Build(IServiceProvider serviceProvider)
 40    {
 29141        return _resolvers
 29142            .Reverse()
 29143            .Select(t => ActivatorUtilities.GetServiceOrCreateInstance(serviceProvider, t))
 29144            .Cast<ITenantResolver>()
 29145            .ToList();
 46    }
 47}