< Summary

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

#LineLine coverage
 1using Fluorite.Strainer.Models;
 2using Fluorite.Strainer.Services.Pagination;
 3
 4namespace Fluorite.Strainer.Services.Pipelines;
 5
 6public class PaginatePipelineOperation : IPaginatePipelineOperation, IStrainerPipelineOperation
 7{
 8    private readonly IPageNumberEvaluator _pageNumberEvaluator;
 9    private readonly IPageSizeEvaluator _pageSizeEvaluator;
 10
 511    public PaginatePipelineOperation(
 512        IPageNumberEvaluator pageNumberEvaluator,
 513        IPageSizeEvaluator pageSizeEvaluator)
 14    {
 515        _pageNumberEvaluator = Guard.Against.Null(pageNumberEvaluator);
 516        _pageSizeEvaluator = Guard.Against.Null(pageSizeEvaluator);
 517    }
 18
 19    public IQueryable<T> Execute<T>(IStrainerModel model, IQueryable<T> source)
 20    {
 421        Guard.Against.Null(model);
 322        Guard.Against.Null(source);
 23
 224        var page = _pageNumberEvaluator.Evaluate(model);
 225        var pageSize = _pageSizeEvaluator.Evaluate(model);
 26
 227        if (page > 1)
 28        {
 129            source = source.Skip((page - 1) * pageSize);
 30        }
 31
 232        if (pageSize > 0)
 33        {
 134            source = source.Take(pageSize);
 35        }
 36
 237        return source;
 38    }
 39}