< Summary

Information
Class: Fluorite.Strainer.Services.Pipelines.SortPipelineOperation
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Services/Pipelines/SortPipelineOperation.cs
Line coverage
100%
Covered lines: 18
Uncovered lines: 0
Coverable lines: 18
Total lines: 45
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
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%
Execute(...)100%44100%

File(s)

/builds/fluorite/strainer/src/Strainer/Services/Pipelines/SortPipelineOperation.cs

#LineLine coverage
 1using Fluorite.Extensions;
 2using Fluorite.Strainer.Models;
 3using Fluorite.Strainer.Services.Sorting;
 4
 5namespace Fluorite.Strainer.Services.Pipelines;
 6
 7public class SortPipelineOperation : ISortPipelineOperation, IStrainerPipelineOperation
 8{
 9    private readonly ISortingApplier _sortingApplier;
 10    private readonly ISortTermParser _sortTermParser;
 11    private readonly ISortExpressionProvider _sortExpressionProvider;
 12
 613    public SortPipelineOperation(
 614        ISortingApplier sortingApplier,
 615        ISortTermParser sortTermParser,
 616        ISortExpressionProvider sortExpressionProvider)
 17    {
 618        _sortingApplier = Guard.Against.Null(sortingApplier);
 619        _sortTermParser = Guard.Against.Null(sortTermParser);
 620        _sortExpressionProvider = Guard.Against.Null(sortExpressionProvider);
 621    }
 22
 23    public IQueryable<T> Execute<T>(IStrainerModel model, IQueryable<T> source)
 24    {
 525        Guard.Against.Null(model);
 426        Guard.Against.Null(source);
 27
 328        var parsedTerms = _sortTermParser.GetParsedTerms(model.Sorts);
 329        var isSortingApplied = _sortingApplier.TryApplySorting(parsedTerms, source, out var sortedSource);
 330        if (isSortingApplied)
 31        {
 132            return sortedSource!;
 33        }
 34
 235        var defaultSortExpression = _sortExpressionProvider.GetDefaultExpression<T>();
 236        if (defaultSortExpression != null)
 37        {
 138            return source.OrderWithSortExpression(defaultSortExpression);
 39        }
 40        else
 41        {
 142            return source;
 43        }
 44    }
 45}