< Summary

Information
Class: Fluorite.Strainer.Services.Metadata.Attributes.AttributeMetadataProvider
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Metadata/Attributes/AttributeMetadataProvider.cs
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 66
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%
GetAllPropertyMetadata()100%11100%
GetDefaultMetadata(...)100%22100%
GetPropertyMetadata(...)100%22100%
GetPropertyMetadatas(...)100%22100%

File(s)

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

#LineLine coverage
 1using Fluorite.Extensions;
 2using Fluorite.Strainer.Models.Metadata;
 3
 4namespace Fluorite.Strainer.Services.Metadata.Attributes;
 5
 6public class AttributeMetadataProvider : IMetadataProvider
 7{
 8    private readonly IMetadataSourceTypeProvider _metadataSourceTypeProvider;
 9    private readonly IMetadataAssemblySourceProvider _metadataAssemblySourceProvider;
 10    private readonly IAttributeMetadataRetriever _attributeMetadataRetriever;
 11
 1712    public AttributeMetadataProvider(
 1713        IMetadataSourceTypeProvider metadataSourceTypeProvider,
 1714        IMetadataAssemblySourceProvider metadataAssemblySourceProvider,
 1715        IAttributeMetadataRetriever attributeMetadataRetriever)
 16    {
 1717        _metadataSourceTypeProvider = Guard.Against.Null(metadataSourceTypeProvider);
 1718        _metadataAssemblySourceProvider = Guard.Against.Null(metadataAssemblySourceProvider);
 1719        _attributeMetadataRetriever = Guard.Against.Null(attributeMetadataRetriever);
 1720    }
 21
 22    public IReadOnlyDictionary<Type, IReadOnlyDictionary<string, IPropertyMetadata>> GetAllPropertyMetadata()
 23    {
 124        var assemblies = _metadataAssemblySourceProvider.GetAssemblies();
 125        var types = _metadataSourceTypeProvider.GetSourceTypes(assemblies);
 126        var objectMetadatas = _attributeMetadataRetriever.GetMetadataDictionaryFromObjectAttributes(types);
 127        var propertyMetadatas = _attributeMetadataRetriever.GetMetadataDictionaryFromPropertyAttributes(types);
 28
 129        return objectMetadatas
 130            .MergeLeft(propertyMetadatas)
 131            .ToReadOnly();
 32    }
 33
 34    public IPropertyMetadata? GetDefaultMetadata(Type modelType)
 35    {
 336        Guard.Against.Null(modelType);
 37
 338        var propertyMetadata = _attributeMetadataRetriever.GetDefaultMetadataFromPropertyAttribute(modelType);
 339        propertyMetadata ??= _attributeMetadataRetriever.GetDefaultMetadataFromObjectAttribute(modelType);
 40
 341        return propertyMetadata;
 42    }
 43
 44    public IPropertyMetadata? GetPropertyMetadata(
 45        Type modelType,
 46        bool isSortableRequired,
 47        bool isFilterableRequired,
 48        string name)
 49    {
 350        Guard.Against.Null(modelType);
 351        Guard.Against.NullOrWhiteSpace(name);
 52
 353        var propertyMetadata = _attributeMetadataRetriever.GetMetadataFromPropertyAttribute(modelType, isSortableRequire
 354        propertyMetadata ??= _attributeMetadataRetriever.GetMetadataFromObjectAttribute(modelType, isSortableRequired, i
 55
 356        return propertyMetadata;
 57    }
 58
 59    public IReadOnlyList<IPropertyMetadata>? GetPropertyMetadatas(Type modelType)
 60    {
 261        Guard.Against.Null(modelType);
 62
 263        return _attributeMetadataRetriever.GetMetadataFromPropertyAttribute(modelType)
 264            ?? _attributeMetadataRetriever.GetMetadataFromObjectAttribute(modelType);
 65    }
 66}