< Summary

Information
Class: Fluorite.Strainer.Services.Filtering.Steps.ChangeTypeOfFilterValueStep
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Filtering/Steps/ChangeTypeOfFilterValueStep.cs
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 45
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%
Execute(...)100%66100%

File(s)

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

#LineLine coverage
 1using Fluorite.Strainer.Services.Conversion;
 2
 3namespace Fluorite.Strainer.Services.Filtering.Steps;
 4
 5public class ChangeTypeOfFilterValueStep : IChangeTypeOfFilterValueStep
 6{
 7    private readonly ITypeChanger _typeChanger;
 8    private readonly ITypeConverterProvider _typeConverterProvider;
 9
 510    public ChangeTypeOfFilterValueStep(
 511        ITypeChanger typeChanger,
 512        ITypeConverterProvider typeConverterProvider)
 13    {
 514        _typeChanger = Guard.Against.Null(typeChanger);
 515        _typeConverterProvider = Guard.Against.Null(typeConverterProvider);
 516    }
 17
 18    public void Execute(FilterExpressionWorkflowContext context)
 19    {
 420        Guard.Against.Null(context);
 421        Guard.Against.Null(context.Term);
 422        Guard.Against.Null(context.Term.Operator);
 423        Guard.Against.Null(context.PropertyMetadata);
 424        Guard.Against.Null(context.PropertyMetadata.PropertyInfo);
 425        Guard.Against.Null(context.FilterTermValue);
 26
 427        if (context.Term.Operator.IsStringBased)
 28        {
 129            return;
 30        }
 31
 332        var propertyType = context.PropertyMetadata!.PropertyInfo!.PropertyType;
 333        var typeConverter = _typeConverterProvider.GetTypeConverter(propertyType);
 334        var canConvertFromString =
 335               context.PropertyMetadata.PropertyInfo.PropertyType != typeof(string)
 336            && typeConverter.CanConvertFrom(typeof(string));
 37
 338        if (canConvertFromString == false)
 39        {
 240            context.FilterTermConstant = _typeChanger.ChangeType(
 241                context.FilterTermValue,
 242                context.PropertyMetadata.PropertyInfo.PropertyType);
 43        }
 344    }
 45}