< Summary

Information
Class: Fluorite.Strainer.Services.Modules.StrainerModule<T>
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Modules/StrainerModule{T}.cs
Line coverage
76%
Covered lines: 16
Uncovered lines: 5
Coverable lines: 21
Total lines: 74
Line coverage: 76.1%
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%
get_CustomFilterMethods()100%11100%
get_CustomSortMethods()100%11100%
get_DefaultMetadata()100%11100%
get_FilterOperators()100%11100%
get_ExcludedBuiltInFilterOperators()100%11100%
get_ObjectMetadata()100%11100%
get_PropertyMetadata()100%11100%
Load(...)0%620%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Modules/StrainerModule{T}.cs

#LineLine coverage
 1using Fluorite.Strainer.Models.Filtering;
 2using Fluorite.Strainer.Models.Filtering.Operators;
 3using Fluorite.Strainer.Models.Metadata;
 4using Fluorite.Strainer.Models.Sorting;
 5
 6namespace Fluorite.Strainer.Services.Modules;
 7
 8/// <summary>
 9/// Provides configuration information about metadata, filter operators
 10/// and custom methods for Strainer.
 11/// </summary>
 12/// <typeparam name="T">
 13/// The type of model for which this module is for.
 14/// </typeparam>
 15public abstract class StrainerModule<T> : IStrainerModule<T>, IStrainerModule
 16{
 17    /// <summary>
 18    /// Initializes a new instance of the <see cref="StrainerModule{T}"/> class.
 19    /// </summary>
 120    protected StrainerModule()
 21    {
 122        CustomFilterMethods = new Dictionary<Type, IDictionary<string, ICustomFilterMethod>>();
 123        CustomSortMethods = new Dictionary<Type, IDictionary<string, ICustomSortMethod>>();
 124        DefaultMetadata = new Dictionary<Type, IPropertyMetadata>();
 125        FilterOperators = new Dictionary<string, IFilterOperator>();
 126        ExcludedBuiltInFilterOperators = new HashSet<string>();
 127        ObjectMetadata = new Dictionary<Type, IObjectMetadata>();
 128        PropertyMetadata = new Dictionary<Type, IDictionary<string, IPropertyMetadata>>();
 129    }
 30
 31    /// <inheritdoc/>
 132    public IDictionary<Type, IDictionary<string, ICustomFilterMethod>> CustomFilterMethods { get; }
 33
 34    /// <inheritdoc/>
 135    public IDictionary<Type, IDictionary<string, ICustomSortMethod>> CustomSortMethods { get; }
 36
 37    /// <inheritdoc/>
 138    public IDictionary<Type, IPropertyMetadata> DefaultMetadata { get; }
 39
 40    /// <inheritdoc/>
 141    public IDictionary<string, IFilterOperator> FilterOperators { get; }
 42
 43    /// <inheritdoc/>
 144    public ISet<string> ExcludedBuiltInFilterOperators { get; }
 45
 46    /// <inheritdoc/>
 247    public IDictionary<Type, IObjectMetadata> ObjectMetadata { get; }
 48
 49    /// <inheritdoc/>
 150    public IDictionary<Type, IDictionary<string, IPropertyMetadata>> PropertyMetadata { get; }
 51
 52    /// <summary>
 53    /// Loads configuration in module.
 54    /// <para/>
 55    /// Override this method to specify configuration for this module.
 56    /// </summary>
 57    /// <param name="builder">
 58    /// The Strainer Module builder.
 59    /// </param>
 60    public abstract void Load(IStrainerModuleBuilder<T> builder);
 61
 62    /// <inheritdoc/>
 63    public void Load(IStrainerModuleBuilder builder)
 64    {
 065        Guard.Against.Null(builder);
 66
 067        if (builder is not IStrainerModuleBuilder<T> typedBuilder)
 68        {
 069            throw new NotSupportedException("Only strongly typed module builder is supported.");
 70        }
 71
 072        Load(typedBuilder);
 073    }
 74}