< Summary

Information
Class: Services.FeedPriceServices.FeedOrderExplanationPicker
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/FeedPriceServices/FeedOrderExplanationPicker.cs
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 32
Line coverage: 100%
Branch coverage
100%
Covered branches: 10
Total branches: 10
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Pick(...)100%1010100%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/FeedPriceServices/FeedOrderExplanationPicker.cs

#LineLine coverage
 1namespace Services.FeedPriceServices;
 2
 3/// <summary>Выбирает из расшифровок по кабинетам сборку клиента заказа.</summary>
 4public static class FeedOrderExplanationPicker
 5{
 6    public static FeedOrderExplanation Pick(FeedExplanationResult result, int keyCount, string? clientName)
 7    {
 68        var cabinet = FeedCabinets.ForClientName(clientName);
 9        FeedOrderExplanation Result(FeedOrderState state, FeedExplanation? selected = null) => new()
 10        {
 11            State = state,
 12            Key = result.Key,
 13            Client = clientName,
 14            Cabinet = cabinet,
 15            Selected = selected,
 16            Explanations = result.Explanations,
 17            Error = result.Error
 18        };
 19
 20        // «Нет ключа» известно до запроса; при недоступном фиде «нет кабинета» и «нет в фиде» были бы неверным диагнозо
 721        if (keyCount == 0) return Result(FeedOrderState.NoKey);
 622        if (result.Error is not null) return Result(FeedOrderState.Error);
 623        if (cabinet is null) return Result(FeedOrderState.NoCabinet);
 24
 225        var selected = result.Explanations
 426            .Where(x => x.Found && string.Equals(x.Cabinet, cabinet, StringComparison.OrdinalIgnoreCase))
 127            .OrderByDescending(x => x.RunId)
 228            .FirstOrDefault();
 29
 230        return selected is null ? Result(FeedOrderState.NotInFeed) : Result(FeedOrderState.Ok, selected);
 31    }
 32}