< Summary

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

#LineLine coverage
 1using Fluorite.Strainer.Services.Conversion;
 2
 3namespace Fluorite.Strainer.Services.Filtering.Steps;
 4
 5public class ConvertFilterValueToStringStep : IConvertFilterValueToStringStep
 6{
 7    private readonly ITypeConverterProvider _typeConverterProvider;
 8    private readonly IStringValueConverter _stringValueConverter;
 9
 510    public ConvertFilterValueToStringStep(
 511        ITypeConverterProvider typeConverterProvider,
 512        IStringValueConverter stringValueConverter)
 13    {
 514        _typeConverterProvider = Guard.Against.Null(typeConverterProvider);
 515        _stringValueConverter = Guard.Against.Null(stringValueConverter);
 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 == true)
 39        {
 140            context.FilterTermConstant = _stringValueConverter.Convert(
 141                context.FilterTermValue,
 142                context.PropertyMetadata.PropertyInfo.PropertyType,
 143                typeConverter);
 44        }
 345    }
 46}