< Summary

Information
Class: Fluorite.Strainer.Services.Metadata.FluentApi.FluentApiPropertyMetadataBuilder
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Metadata/FluentApi/FluentApiPropertyMetadataBuilder.cs
Line coverage
100%
Covered lines: 26
Uncovered lines: 0
Coverable lines: 26
Total lines: 48
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
BuildDefaultMetadata(...)100%11100%
BuildMetadataForProperty(...)100%22100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Metadata/FluentApi/FluentApiPropertyMetadataBuilder.cs

#LineLine coverage
 1using Fluorite.Strainer.Models.Metadata;
 2using System.Reflection;
 3
 4namespace Fluorite.Strainer.Services.Metadata.FluentApi;
 5
 6public class FluentApiPropertyMetadataBuilder : IFluentApiPropertyMetadataBuilder
 7{
 8    private readonly IStrainerOptionsProvider _strainerOptionsProvider;
 9
 1310    public FluentApiPropertyMetadataBuilder(IStrainerOptionsProvider strainerOptionsProvider)
 11    {
 1312        _strainerOptionsProvider = Guard.Against.Null(strainerOptionsProvider);
 1313    }
 14
 15    public IPropertyMetadata BuildDefaultMetadata(IObjectMetadata objectMetadata)
 16    {
 717        Guard.Against.Null(objectMetadata);
 718        Guard.Against.Null(objectMetadata.DefaultSortingPropertyInfo);
 19
 720        return new PropertyMetadata(objectMetadata.DefaultSortingPropertyName, objectMetadata.DefaultSortingPropertyInfo
 721        {
 722            IsDefaultSorting = true,
 723            DefaultSortingWay = objectMetadata.DefaultSortingWay,
 724            IsFilterable = objectMetadata.IsFilterable,
 725            IsSortable = objectMetadata.IsSortable,
 726        };
 27    }
 28
 29    public IPropertyMetadata BuildMetadataForProperty(IObjectMetadata objectMetadata, PropertyInfo propertyInfo)
 30    {
 431        Guard.Against.Null(objectMetadata);
 432        Guard.Against.Null(objectMetadata.DefaultSortingPropertyInfo);
 433        Guard.Against.Null(propertyInfo);
 34
 435        var isDefaultSorting = objectMetadata.DefaultSortingPropertyInfo == propertyInfo;
 436        var defaultSortingWay = isDefaultSorting
 437            ? objectMetadata.DefaultSortingWay
 438            : _strainerOptionsProvider.GetStrainerOptions().DefaultSortingWay;
 39
 440        return new PropertyMetadata(propertyInfo.Name, propertyInfo)
 441        {
 442            IsFilterable = objectMetadata.IsFilterable,
 443            IsSortable = objectMetadata.IsSortable,
 444            IsDefaultSorting = isDefaultSorting,
 445            DefaultSortingWay = defaultSortingWay,
 446        };
 47    }
 48}