< Summary

Information
Class: Elsa.Diagnostics.ConsoleLogs.Extensions.ConsoleLogProviderServiceCollectionExtensions
Assembly: Elsa.Diagnostics.ConsoleLogs
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.ConsoleLogs/Extensions/ConsoleLogProviderServiceCollectionExtensions.cs
Line coverage
80%
Covered lines: 16
Uncovered lines: 4
Coverable lines: 20
Total lines: 40
Line coverage: 80%
Branch coverage
50%
Covered branches: 4
Total branches: 8
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
DecorateConsoleLogProvider(...)50%2292.3%
CreateProvider(...)50%9657.14%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.ConsoleLogs/Extensions/ConsoleLogProviderServiceCollectionExtensions.cs

#LineLine coverage
 1using ConsoleLogStreaming.Core;
 2using Elsa.Diagnostics.ConsoleLogs.Services;
 3using Microsoft.Extensions.DependencyInjection;
 4using Microsoft.Extensions.DependencyInjection.Extensions;
 5
 6namespace Elsa.Diagnostics.ConsoleLogs.Extensions;
 7
 8internal static class ConsoleLogProviderServiceCollectionExtensions
 9{
 10    public static void DecorateConsoleLogProvider(this IServiceCollection services)
 11    {
 72412        var descriptor = services.LastOrDefault(x => x.ServiceType == typeof(IConsoleLogProvider));
 1013        if (descriptor == null)
 014            return;
 15
 1016        services.TryAddSingleton<ElsaConsoleLogRecentBuffer>();
 1017        services.Remove(descriptor);
 1018        services.Add(ServiceDescriptor.Describe(
 1019            typeof(IConsoleLogProvider),
 920            sp => new ElsaConsoleLogProvider(
 921                CreateProvider(sp, descriptor),
 922                sp.GetRequiredService<IConsoleLogContextAccessor>(),
 923                sp.GetRequiredService<ElsaConsoleLogRecentBuffer>()),
 1024            descriptor.Lifetime));
 1025    }
 26
 27    private static IConsoleLogProvider CreateProvider(IServiceProvider serviceProvider, ServiceDescriptor descriptor)
 28    {
 929        if (descriptor.ImplementationInstance is IConsoleLogProvider instance)
 430            return instance;
 31
 532        if (descriptor.ImplementationFactory != null)
 533            return (IConsoleLogProvider)descriptor.ImplementationFactory(serviceProvider)!;
 34
 035        if (descriptor.ImplementationType != null)
 036            return (IConsoleLogProvider)ActivatorUtilities.CreateInstance(serviceProvider, descriptor.ImplementationType
 37
 038        throw new InvalidOperationException("The console log provider registration is invalid.");
 39    }
 40}