< Summary

Information
Class: Fluorite.Strainer.Services.Filtering.Steps.MitigateCaseInsensitivityStep
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Filtering/Steps/MitigateCaseInsensitivityStep.cs
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 42
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
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%
Execute(...)100%1010100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Filtering/Steps/MitigateCaseInsensitivityStep.cs

#LineLine coverage
 1using System.Linq.Expressions;
 2
 3namespace Fluorite.Strainer.Services.Filtering.Steps;
 4
 5public class MitigateCaseInsensitivityStep : IMitigateCaseInsensitivityStep
 6{
 7    private readonly IStrainerOptionsProvider _strainerOptionsProvider;
 8
 59    public MitigateCaseInsensitivityStep(IStrainerOptionsProvider strainerOptionsProvider)
 10    {
 511        _strainerOptionsProvider = Guard.Against.Null(strainerOptionsProvider);
 512    }
 13
 14    public void Execute(FilterExpressionWorkflowContext context)
 15    {
 416        Guard.Against.Null(context);
 417        Guard.Against.Null(context.Term);
 418        Guard.Against.Null(context.Term.Operator);
 419        Guard.Against.Null(context.PropertyMetadata);
 420        Guard.Against.Null(context.PropertyMetadata.PropertyInfo);
 21
 422        if (context.IsMaterializedQueryable)
 23        {
 124            return;
 25        }
 26
 327        var options = _strainerOptionsProvider.GetStrainerOptions();
 28
 329        if ((context.Term.Operator.IsCaseInsensitive
 330            || (!context.Term.Operator.IsCaseInsensitive && options.IsCaseInsensitiveForValues))
 331            && context.PropertyMetadata.PropertyInfo.PropertyType == typeof(string))
 32        {
 233            context.PropertyValue = Expression.Call(
 234                context.PropertyValue,
 235                typeof(string).GetMethod(nameof(string.ToUpper), Array.Empty<Type>()));
 36
 237            context.FinalExpression = Expression.Call(
 238                context.FinalExpression,
 239                typeof(string).GetMethod(nameof(string.ToUpper), Array.Empty<Type>()));
 40        }
 341    }
 42}