< Summary - Code Coverage

Information
Class: Plainquire.Filter.Mvc.ModelBinders.EntityFilterSetModelBinderProvider
Assembly: Plainquire.Filter.Mvc
File(s): /home/runner/work/plainquire/plainquire/Plainquire.Filter/Plainquire.Filter.Mvc/ModelBinders/EntityFilterSetModelBinderProvider.cs
Tag: 64_13932151703
Line coverage
92%
Covered lines: 12
Uncovered lines: 1
Coverable lines: 13
Total lines: 38
Line coverage: 92.3%
Branch coverage
75%
Covered branches: 3
Total branches: 4
Branch coverage: 75%
Method coverage
100%
Covered methods: 2
Total methods: 2
Method coverage: 100%

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
GetBinder(...)75%4490%
GetModelBinder(...)100%11100%

File(s)

/home/runner/work/plainquire/plainquire/Plainquire.Filter/Plainquire.Filter.Mvc/ModelBinders/EntityFilterSetModelBinderProvider.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Mvc.ModelBinding;
 2using Plainquire.Filter.Abstractions;
 3using System;
 4using System.Linq;
 5using System.Reflection;
 6
 7namespace Plainquire.Filter.Mvc.ModelBinders;
 8
 9/// <summary>
 10/// Model binding provider for <see cref="EntityFilterSetModelBinder"/>
 11/// </summary>
 12public class EntityFilterSetModelBinderProvider : IModelBinderProvider
 13{
 14    /// <inheritdoc />
 15    public IModelBinder? GetBinder(ModelBinderProviderContext context)
 16    {
 617        if (context == null)
 018            throw new ArgumentNullException(nameof(context));
 19
 620        var entityFilterSetAttribute = context.Metadata.ModelType.GetCustomAttribute<EntityFilterSetAttribute>();
 621        if (entityFilterSetAttribute == null)
 422            return null;
 23
 224        var entityFilterBinders = context.Metadata.ModelType
 225            .GetProperties()
 226            .Select(property => GetModelBinder(property, context))
 227            .ToDictionary(x => x.Type, x => (x.Metadata, x.Binder));
 28
 229        return new EntityFilterSetModelBinder(entityFilterBinders);
 30    }
 31
 32    private static (Type Type, ModelMetadata Metadata, IModelBinder Binder) GetModelBinder(PropertyInfo property, ModelB
 33    {
 234        var modelMetadata = context.MetadataProvider.GetMetadataForType(property.PropertyType);
 235        var modelBinder = context.CreateBinder(modelMetadata);
 236        return (property.PropertyType, modelMetadata, modelBinder);
 37    }
 38}