< Summary

Information
Class: Fluorite.Strainer.Services.Metadata.ObjectMetadataBuilder<T>
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Metadata/ObjectMetadataBuilder.cs
Line coverage
100%
Covered lines: 33
Uncovered lines: 0
Coverable lines: 33
Total lines: 79
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_DefaultSortingWay()100%11100%
get_IsFilterableValue()100%11100%
get_IsSortableValue()100%11100%
Build()100%11100%
IsFilterable()100%11100%
IsSortable()100%11100%
IsDefaultSortingAscending()100%11100%
IsDefaultSortingDescending()100%11100%
Save(...)100%11100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Metadata/ObjectMetadataBuilder.cs

#LineLine coverage
 1using Fluorite.Strainer.Models.Metadata;
 2using Fluorite.Strainer.Models.Sorting;
 3using System.Linq.Expressions;
 4using System.Reflection;
 5
 6namespace Fluorite.Strainer.Services.Metadata;
 7
 8public class ObjectMetadataBuilder<TEntity> : IObjectMetadataBuilder<TEntity>
 9{
 10    private readonly IDictionary<Type, IObjectMetadata> _objectMetadata;
 11    private readonly string _defaultSortingPropertyName;
 12    private readonly PropertyInfo _defaultSortingPropertyInfo;
 13
 1314    public ObjectMetadataBuilder(
 1315        IPropertyInfoProvider propertyInfoProvider,
 1316        IDictionary<Type, IObjectMetadata> objectMetadata,
 1317        Expression<Func<TEntity, object>> defaultSortingPropertyExpression)
 18    {
 1319        Guard.Against.Null(propertyInfoProvider);
 1320        Guard.Against.Null(objectMetadata);
 1321        Guard.Against.Null(defaultSortingPropertyExpression);
 22
 1323        (_defaultSortingPropertyInfo, _defaultSortingPropertyName) = propertyInfoProvider.GetPropertyInfoAndFullName(def
 1324        _objectMetadata = objectMetadata;
 1325        Save(Build());
 1326    }
 27
 2128    protected SortingWay? DefaultSortingWay { get; set; }
 29
 2130    protected bool IsFilterableValue { get; set; }
 31
 2132    protected bool IsSortableValue { get; set; }
 33
 34    public IObjectMetadata Build()
 35    {
 1936        return new ObjectMetadata(_defaultSortingPropertyName, _defaultSortingPropertyInfo, DefaultSortingWay)
 1937        {
 1938            IsFilterable = IsFilterableValue,
 1939            IsSortable = IsSortableValue,
 1940        };
 41    }
 42
 43    public IObjectMetadataBuilder<TEntity> IsFilterable()
 44    {
 245        IsFilterableValue = true;
 246        Save(Build());
 47
 248        return this;
 49    }
 50
 51    public IObjectMetadataBuilder<TEntity> IsSortable()
 52    {
 253        IsSortableValue = true;
 254        Save(Build());
 55
 256        return this;
 57    }
 58
 59    public IObjectMetadataBuilder<TEntity> IsDefaultSortingAscending()
 60    {
 161        DefaultSortingWay = SortingWay.Ascending;
 162        Save(Build());
 63
 164        return this;
 65    }
 66
 67    public IObjectMetadataBuilder<TEntity> IsDefaultSortingDescending()
 68    {
 169        DefaultSortingWay = SortingWay.Descending;
 170        Save(Build());
 71
 172        return this;
 73    }
 74
 75    protected void Save(IObjectMetadata objectMetadata)
 76    {
 1977        _objectMetadata[typeof(TEntity)] = Guard.Against.Null(objectMetadata);
 1978    }
 79}