< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Application.UseCases.ServiceOrders.PartItemResponse
Assembly: MechanicsSoftware.Application
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Application/UseCases/ServiceOrders/ServiceOrderResponse.cs
Line coverage
100%
Covered lines: 12
Uncovered lines: 0
Coverable lines: 12
Total lines: 100
Line coverage: 100%
Branch coverage
50%
Covered branches: 1
Total branches: 2
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
From(...)50%22100%

File(s)

/home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Application/UseCases/ServiceOrders/ServiceOrderResponse.cs

#LineLine coverage
 1using MechanicsSoftware.Domain.Entities;
 2using MechanicsSoftware.Domain.Enums;
 3
 4namespace MechanicsSoftware.Application.UseCases.ServiceOrders;
 5
 6public sealed record ServiceItemResponse(
 7    Guid Id,
 8    Guid ServiceId,
 9    string ServiceName,
 10    int UnitPriceInCents,
 11    int Quantity,
 12    int TotalInCents)
 13{
 14    public static ServiceItemResponse From(ServiceItem item) =>
 15        new(item.Id, item.ServiceId, item.ServiceName,
 16            item.UnitPrice.Cents, item.Quantity, item.Total.Cents);
 17}
 18
 419public sealed record PartItemResponse(
 420    Guid Id,
 421    Guid PartId,
 422    string PartName,
 423    int UnitPriceInCents,
 424    int Quantity,
 425    string Availability,
 426    int TotalInCents)
 27{
 28    public static PartItemResponse From(PartItem item) =>
 429        new(item.Id, item.PartId, item.PartName,
 430            item.UnitPrice.Cents, item.Quantity,
 431            item.Availability == PartAvailability.Available ? "AVAILABLE" : "UNAVAILABLE",
 432            item.Total.Cents);
 33}
 34
 35public sealed record BudgetResponse(
 36    Guid Id,
 37    int TotalInCents,
 38    string TotalFormatted,
 39    string Status,
 40    DateTime CreatedAt)
 41{
 42    public static BudgetResponse From(Budget budget) =>
 43        new(budget.Id, budget.Total.Cents, budget.Total.ToFormatted(),
 44            budget.Status.ToString(), budget.CreatedAt);
 45}
 46
 47public sealed record ServiceOrderResponse(
 48    Guid Id,
 49    Guid CustomerId,
 50    Guid VehicleId,
 51    string Status,
 52    DateTime CreatedAt,
 53    DateTime? CompletedAt,
 54    DateTime? DeliveredAt,
 55    BudgetResponse? Budget,
 56    IReadOnlyList<ServiceItemResponse> ServiceItems,
 57    IReadOnlyList<PartItemResponse> PartItems)
 58{
 59    public static ServiceOrderResponse From(ServiceOrder order) =>
 60        new(order.Id,
 61            order.CustomerId,
 62            order.VehicleId,
 63            order.Status.ToString(),
 64            order.CreatedAt,
 65            order.CompletedAt,
 66            order.DeliveredAt,
 67            order.Budget is not null ? BudgetResponse.From(order.Budget) : null,
 68            order.ServiceItems.Select(ServiceItemResponse.From).ToList(),
 69            order.PartItems.Select(PartItemResponse.From).ToList());
 70}
 71
 72public sealed record ServiceOrderSummaryResponse(
 73    Guid Id,
 74    Guid CustomerId,
 75    Guid VehicleId,
 76    string Status,
 77    DateTime CreatedAt
 78);
 79
 80public sealed record ServiceOrderStatusResponse(
 81    Guid Id,
 82    string Status,
 83    DateTime CreatedAt,
 84    DateTime? DeliveredAt
 85);
 86
 87public sealed record AddPartItemResponse(
 88    Guid Id,
 89    Guid PartId,
 90    string PartName,
 91    int UnitPriceInCents,
 92    int Quantity,
 93    string Availability,
 94    int TotalInCents,
 95    string? Warning);
 96
 97public sealed record AverageExecutionTimeResponse(
 98    double AverageHours,
 99    int OrderCount
 100);