< Summary

Information
Class: Fluorite.Strainer.Services.Metadata.MetadataFacade
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Metadata/MetadataFacade.cs
Line coverage
100%
Covered lines: 22
Uncovered lines: 0
Coverable lines: 22
Total lines: 80
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
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%
GetAllMetadata()100%22100%
GetDefaultMetadata()100%11100%
GetDefaultMetadata(...)100%11100%
GetMetadata(...)100%11100%
GetMetadata(...)100%11100%
GetMetadatas()100%11100%
GetMetadatas(...)100%22100%
GetFirstNotNullResultFromProviders(...)100%44100%

File(s)

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

#LineLine coverage
 1using Fluorite.Extensions;
 2using Fluorite.Strainer.Models.Metadata;
 3
 4namespace Fluorite.Strainer.Services.Metadata;
 5
 6public class MetadataFacade : IMetadataFacade
 7{
 8    private readonly IEnumerable<IMetadataProvider> _metadataProviders;
 9
 1710    public MetadataFacade(IEnumerable<IMetadataProvider> metadataProviders)
 11    {
 1712        _metadataProviders = Guard.Against.Null(metadataProviders);
 1713    }
 14
 15    public IReadOnlyDictionary<Type, IReadOnlyDictionary<string, IPropertyMetadata>> GetAllMetadata()
 16    {
 817        return GetFirstNotNullResultFromProviders(p => p.GetAllPropertyMetadata())
 418            ?? new Dictionary<Type, IReadOnlyDictionary<string, IPropertyMetadata>>().ToReadOnly();
 19    }
 20
 21    public IPropertyMetadata? GetDefaultMetadata<TEntity>()
 22    {
 823        return GetDefaultMetadata(typeof(TEntity));
 24    }
 25
 26    public IPropertyMetadata? GetDefaultMetadata(Type modelType)
 27    {
 828        Guard.Against.Null(modelType);
 29
 1530        return GetFirstNotNullResultFromProviders(p => p.GetDefaultMetadata(modelType));
 31    }
 32
 33    public IPropertyMetadata? GetMetadata<TEntity>(
 34        bool isSortableRequired,
 35        bool isFilterableRequired,
 36        string name)
 37    {
 238        return GetMetadata(typeof(TEntity), isSortableRequired, isFilterableRequired, name);
 39    }
 40
 41    public IPropertyMetadata? GetMetadata(
 42        Type modelType,
 43        bool isSortableRequired,
 44        bool isFilterableRequired,
 45        string name)
 46    {
 247        Guard.Against.Null(modelType);
 248        Guard.Against.NullOrWhiteSpace(name);
 49
 450        return GetFirstNotNullResultFromProviders(p => p.GetPropertyMetadata(modelType, isSortableRequired, isFilterable
 51    }
 52
 53    public IEnumerable<IPropertyMetadata> GetMetadatas<TEntity>()
 54    {
 255        return GetMetadatas(typeof(TEntity));
 56    }
 57
 58    public IEnumerable<IPropertyMetadata> GetMetadatas(Type modelType)
 59    {
 260        Guard.Against.Null(modelType);
 61
 462        return GetFirstNotNullResultFromProviders(p => p.GetPropertyMetadatas(modelType))
 263            ?? Enumerable.Empty<IPropertyMetadata>();
 64    }
 65
 66    private TResult? GetFirstNotNullResultFromProviders<TResult>(Func<IMetadataProvider, TResult?> resultFunc)
 67        where TResult : class
 68    {
 5069        foreach (var provider in _metadataProviders)
 70        {
 1571            var result = resultFunc.Invoke(provider);
 1572            if (result != null)
 73            {
 1274                return result;
 75            }
 76        }
 77
 478        return null;
 1279    }
 80}