< Summary

Information
Class: Elsa.Common.Multitenancy.TenantScope
Assembly: Elsa.Common
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Multitenancy/Models/TenantScope.cs
Line coverage
88%
Covered lines: 8
Uncovered lines: 1
Coverable lines: 9
Total lines: 24
Line coverage: 88.8%
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_ServiceScope()100%11100%
get_ServiceProvider()100%11100%
DisposeAsync()50%2280%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Common/Multitenancy/Models/TenantScope.cs

#LineLine coverage
 1using Microsoft.Extensions.DependencyInjection;
 2
 3namespace Elsa.Common.Multitenancy;
 4
 5/// <summary>
 6/// Represents a tenant scope, which sets the current tenant for the duration of the scope.
 7/// After the scope is disposed, the original tenant is restored.
 8/// </summary>
 3699public class TenantScope(IServiceScope serviceScope, ITenantAccessor tenantAccessor, Tenant? tenant) : ITenantScope, IAs
 10{
 36911    private readonly IDisposable _tenantContext = tenantAccessor.PushContext(tenant);
 12
 123713    public IServiceScope ServiceScope { get; } = serviceScope;
 52714    public IServiceProvider ServiceProvider => ServiceScope.ServiceProvider;
 15
 16    public async ValueTask DisposeAsync()
 17    {
 34118        _tenantContext.Dispose();
 34119        if (ServiceScope is IAsyncDisposable asyncDisposable)
 34120            await asyncDisposable.DisposeAsync();
 21        else
 022            ServiceScope.Dispose();
 34123    }
 24}