< Summary

Information
Class: Fluorite.Strainer.Services.Metadata.Attributes.AttributePropertyMetadataBuilder
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Metadata/Attributes/AttributePropertyMetadataBuilder.cs
Line coverage
48%
Covered lines: 12
Uncovered lines: 13
Coverable lines: 25
Total lines: 48
Line coverage: 48%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
BuildDefaultMetadata(...)100%11100%
BuildDefaultMetadataForProperty(...)0%620%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Metadata/Attributes/AttributePropertyMetadataBuilder.cs

#LineLine coverage
 1using Fluorite.Strainer.Attributes;
 2using Fluorite.Strainer.Models.Metadata;
 3using System.Reflection;
 4
 5namespace Fluorite.Strainer.Services.Metadata.Attributes;
 6
 7public class AttributePropertyMetadataBuilder : IAttributePropertyMetadataBuilder
 8{
 9    private readonly IStrainerOptionsProvider _strainerOptionsProvider;
 10
 911    public AttributePropertyMetadataBuilder(IStrainerOptionsProvider strainerOptionsProvider)
 12    {
 913        _strainerOptionsProvider = Guard.Against.Null(strainerOptionsProvider);
 914    }
 15
 16    public IPropertyMetadata BuildDefaultMetadata(StrainerObjectAttribute attribute, PropertyInfo propertyInfo)
 17    {
 118        Guard.Against.Null(attribute);
 119        Guard.Against.Null(propertyInfo);
 20
 121        return new PropertyMetadata(propertyInfo.Name, propertyInfo)
 122        {
 123            IsDefaultSorting = true,
 124            DefaultSortingWay = attribute.DefaultSortingWay,
 125            IsFilterable = attribute.IsFilterable,
 126            IsSortable = attribute.IsSortable,
 127        };
 28    }
 29
 30    public IPropertyMetadata BuildDefaultMetadataForProperty(StrainerObjectAttribute attribute, PropertyInfo propertyInf
 31    {
 032        Guard.Against.Null(attribute);
 033        Guard.Against.Null(propertyInfo);
 34
 035        var isDefaultSorting = attribute.DefaultSortingPropertyInfo == propertyInfo;
 036        var defaultSortingWay = isDefaultSorting
 037            ? attribute.DefaultSortingWay
 038            : _strainerOptionsProvider.GetStrainerOptions().DefaultSortingWay;
 39
 040        return new PropertyMetadata(propertyInfo.Name, propertyInfo)
 041        {
 042            IsDefaultSorting = isDefaultSorting,
 043            DefaultSortingWay = defaultSortingWay,
 044            IsFilterable = attribute.IsFilterable,
 045            IsSortable = attribute.IsSortable,
 046        };
 47    }
 48}