< Summary

Information
Class: Elsa.AI.Host.Services.AIContextProviderValidationHostedService
Assembly: Elsa.AI.Host
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Services/AIContextProviderValidationHostedService.cs
Line coverage
91%
Covered lines: 11
Uncovered lines: 1
Coverable lines: 12
Total lines: 26
Line coverage: 91.6%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
StartAsync(...)100%22100%
StopAsync(...)100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.AI.Host/Services/AIContextProviderValidationHostedService.cs

#LineLine coverage
 1using Elsa.AI.Abstractions.Contracts;
 2using Microsoft.Extensions.DependencyInjection;
 3using Microsoft.Extensions.Hosting;
 4using Microsoft.Extensions.Logging;
 5
 6namespace Elsa.AI.Host.Services;
 7
 28public class AIContextProviderValidationHostedService(
 29    IServiceScopeFactory scopeFactory,
 210    ILogger<AIContextProviderValidationHostedService> logger) : IHostedService
 11{
 12    public Task StartAsync(CancellationToken cancellationToken)
 13    {
 214        using var scope = scopeFactory.CreateScope();
 215        var providers = scope.ServiceProvider.GetServices<IAIContextProvider>();
 16
 1817        foreach (var group in providers.GroupBy(x => x.Kind, StringComparer.OrdinalIgnoreCase).Where(x => x.Count() > 1)
 218            logger.LogWarning(
 219                "Multiple AI context providers are registered for kind {ContextKind}. The last non-placeholder provider 
 220                group.Key);
 21
 222        return Task.CompletedTask;
 223    }
 24
 025    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
 26}