< Summary

Information
Class: Fluorite.Strainer.Services.Filtering.FilterExpressionWorkflow
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Filtering/FilterExpressionWorkflow.cs
Line coverage
100%
Covered lines: 7
Uncovered lines: 0
Coverable lines: 7
Total lines: 38
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%
Run(...)100%22100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Filtering/FilterExpressionWorkflow.cs

#LineLine coverage
 1using System.Linq.Expressions;
 2
 3namespace Fluorite.Strainer.Services.Filtering;
 4
 5/// <summary>
 6/// Represents a workflow, that when provided with context produces a filtering expression.
 7/// </summary>
 8public class FilterExpressionWorkflow : IFilterExpressionWorkflow
 9{
 10    private readonly IReadOnlyCollection<IFilterExpressionWorkflowStep> _steps;
 11
 12    /// <summary>
 13    /// Initializes a new instance of the <see cref="FilterExpressionWorkflow"/> class.
 14    /// </summary>
 15    /// <param name="steps">
 16    /// The workflow steps being its basis.
 17    /// </param>
 218    public FilterExpressionWorkflow(IReadOnlyCollection<IFilterExpressionWorkflowStep> steps)
 19    {
 220        _steps = Guard.Against.Null(steps);
 221    }
 22
 23    /// <inheritdoc/>
 24    /// <exception cref="ArgumentNullException">
 25    /// <paramref name="workflowContext"/> is <see langword="null"/>.
 26    /// </exception>
 27    public Expression Run(FilterExpressionWorkflowContext workflowContext)
 28    {
 129        Guard.Against.Null(workflowContext);
 30
 431        foreach (var step in _steps)
 32        {
 133            step.Execute(workflowContext);
 34        }
 35
 136        return workflowContext.FinalExpression!;
 37    }
 38}