< Summary

Information
Class: Pozitron.QuerySpecification.IQueryableExtensions
Assembly: Pozitron.QuerySpecification.EntityFrameworkCore
File(s): /home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification.EntityFrameworkCore/Extensions/IQueryableExtensions.cs
Tag: 44_11195777782
Line coverage
100%
Covered lines: 11
Uncovered lines: 0
Coverable lines: 11
Total lines: 48
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
WithSpecification(...)100%22100%
WithSpecification(...)100%22100%
ToPagedResultAsync(...)100%11100%
ToPagedResultAsync()100%11100%

File(s)

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification.EntityFrameworkCore/Extensions/IQueryableExtensions.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static class IQueryableExtensions
 4{
 5    public static IQueryable<TSource> WithSpecification<TSource>(
 6      this IQueryable<TSource> source,
 7      Specification<TSource> specification,
 8      SpecificationEvaluator? evaluator = null)
 9      where TSource : class
 10    {
 311        evaluator ??= SpecificationEvaluator.Default;
 312        return evaluator.Evaluate(source, specification);
 13    }
 14
 15    public static IQueryable<TResult> WithSpecification<TSource, TResult>(
 16      this IQueryable<TSource> source,
 17      Specification<TSource, TResult> specification,
 18      SpecificationEvaluator? evaluator = null)
 19      where TSource : class
 20    {
 521        evaluator ??= SpecificationEvaluator.Default;
 522        return evaluator.Evaluate(source, specification);
 23    }
 24
 25    public static Task<PagedResult<TSource>> ToPagedResultAsync<TSource>(
 26      this IQueryable<TSource> source,
 27      PagingFilter filter,
 28      CancellationToken cancellationToken = default)
 29      where TSource : class
 230        => ToPagedResultAsync(source, filter, PaginationSettings.Default, cancellationToken);
 31
 32    public static async Task<PagedResult<TSource>> ToPagedResultAsync<TSource>(
 33      this IQueryable<TSource> source,
 34      PagingFilter filter,
 35      PaginationSettings paginationSettings,
 36      CancellationToken cancellationToken = default)
 37      where TSource : class
 38    {
 339        var count = await source.CountAsync(cancellationToken);
 340        var pagination = new Pagination(paginationSettings, count, filter);
 41
 342        source = source.ApplyPaging(pagination);
 43
 344        var data = await source.ToListAsync(cancellationToken);
 45
 346        return new PagedResult<TSource>(data, pagination);
 347    }
 48}