< Summary

Information
Class: OzonOrdersWeb.WebServices.Orders.OrderControlCandidateStatusSynchronizer
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderControlCandidateStatusSynchronizer.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 9
Coverable lines: 9
Total lines: 25
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
SynchronizeAsync()0%2040%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/WebServices/Orders/OrderControlCandidateStatusSynchronizer.cs

#LineLine coverage
 1using Services.OrderControlServices;
 2
 3namespace OzonOrdersWeb.WebServices.Orders;
 4
 5/// <summary>
 6/// Адаптер SLA к штатному обновлению статусов Ozon через API.
 7/// </summary>
 08public sealed class OrderControlCandidateStatusSynchronizer(IOrdersClientStatusSyncService clientStatusSyncService)
 9    : IOrderControlCandidateStatusSynchronizer
 10{
 11    public async Task<IReadOnlySet<int>> SynchronizeAsync(IReadOnlyCollection<int> orderIds, CancellationToken cancellat
 12    {
 013        var distinctIds = orderIds.Distinct().ToArray();
 014        if (distinctIds.Length == 0)
 015            return new HashSet<int>();
 16
 017        var result = await clientStatusSyncService.SyncOrderStatusesAsync(distinctIds, cancellationToken);
 18        // Ошибка на весь батч (например, недоступен справочник клиентов Ozon) — ни один заказ
 19        // в этом проходе не считается актуализированным, а не только те, что реально не ответили.
 020        if (!string.IsNullOrWhiteSpace(result.Error))
 021            return new HashSet<int>();
 22
 023        return distinctIds.Where(id => !result.FailedOrderIds.Contains(id)).ToHashSet();
 024    }
 25}