< Summary

Information
Class: Fluorite.Strainer.Services.Filtering.CustomFilteringExpressionProvider
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Filtering/CustomFilteringExpressionProvider.cs
Line coverage
100%
Covered lines: 15
Uncovered lines: 0
Coverable lines: 15
Total lines: 42
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
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%
TryGetCustomExpression(...)100%66100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Filtering/CustomFilteringExpressionProvider.cs

#LineLine coverage
 1using Fluorite.Strainer.Models.Filtering;
 2using Fluorite.Strainer.Models.Filtering.Terms;
 3using Fluorite.Strainer.Services.Configuration;
 4using System.Linq.Expressions;
 5
 6namespace Fluorite.Strainer.Services.Filtering;
 7
 8public class CustomFilteringExpressionProvider : ICustomFilteringExpressionProvider
 9{
 10    private readonly IConfigurationCustomMethodsProvider _configurationCustomMethodsProvider;
 11
 512    public CustomFilteringExpressionProvider(IConfigurationCustomMethodsProvider configurationCustomMethodsProvider)
 13    {
 514        _configurationCustomMethodsProvider = Guard.Against.Null(configurationCustomMethodsProvider);
 515    }
 16
 17    public bool TryGetCustomExpression<T>(
 18        IFilterTerm filterTerm,
 19        string filterTermName,
 20        out Expression<Func<T, bool>>? expression)
 21    {
 422        Guard.Against.Null(filterTerm);
 423        Guard.Against.Null(filterTermName);
 24
 425        var customFilterMethods = _configurationCustomMethodsProvider.GetCustomFilterMethods();
 426        if (customFilterMethods.TryGetValue(typeof(T), out var typeCustomFilterMethods)
 427            && typeCustomFilterMethods.TryGetValue(filterTermName, out var customMethod))
 28        {
 229            var customFilterMethod = (ICustomFilterMethod<T>)customMethod;
 30
 231            expression = customFilterMethod.FilterTermExpression is not null
 232                ? customFilterMethod.FilterTermExpression(filterTerm)
 233                : customFilterMethod.Expression!;
 34
 235            return true;
 36        }
 37
 238        expression = null;
 39
 240        return false;
 41    }
 42}