< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Domain.ValueObjects.ServiceOrderStatus
Assembly: MechanicsSoftware.Domain
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/ValueObjects/ServiceOrderStatus.cs
Line coverage
96%
Covered lines: 31
Uncovered lines: 1
Coverable lines: 32
Total lines: 57
Line coverage: 96.8%
Branch coverage
90%
Covered branches: 9
Total branches: 10
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Value()100%11100%
GetEqualityComponents()100%11100%
.cctor()100%11100%
TransitionTo(...)100%22100%
ToString()87.5%8890.9%
Is(...)100%11100%
CreateReceived()100%11100%

File(s)

/home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/ValueObjects/ServiceOrderStatus.cs

#LineLine coverage
 1using MechanicsSoftware.Domain.Exceptions;
 2
 3namespace MechanicsSoftware.Domain.ValueObjects;
 4
 8305public sealed class ServiceOrderStatus(ServiceOrderStatus.Status value) : ValueObject
 6{
 8947    public Status Value => value;
 8    public enum Status
 9    {
 10        Received,
 11        InDiagnosis,
 12        AwaitingApproval,
 13        InExecution,
 14        Completed,
 15        Delivered,
 16        Cancelled
 17    }
 18
 19    protected override IEnumerable<object?> GetEqualityComponents()
 29220    {
 29221        yield return Value;
 4422    }
 23
 224    private static readonly HashSet<(Status From, Status To)> _validTransitions =
 225    [
 226        (Status.Received,         Status.InDiagnosis),
 227        (Status.InDiagnosis,      Status.AwaitingApproval),
 228        (Status.AwaitingApproval, Status.InExecution),
 229        (Status.AwaitingApproval, Status.Cancelled),
 230        (Status.InExecution,      Status.Completed),
 231        (Status.Completed,        Status.Delivered),
 232    ];
 33
 34    public ServiceOrderStatus TransitionTo(Status newStatus)
 38635    {
 38636        if (!_validTransitions.Contains((value, newStatus)))
 2837            throw new InvalidStatusTransitionException(this, new ServiceOrderStatus(newStatus));
 38
 35839        return new ServiceOrderStatus(newStatus);
 35840    }
 41
 27842    public override string ToString() => Value switch
 27843    {
 8244        Status.Received => "RECEIVED",
 6045        Status.InDiagnosis => "IN_DIAGNOSIS",
 3646        Status.AwaitingApproval => "AWAITING_APPROVAL",
 4047        Status.InExecution => "IN_EXECUTION",
 2248        Status.Completed => "COMPLETED",
 1849        Status.Delivered => "DELIVERED",
 2050        Status.Cancelled => "CANCELLED",
 051        _ => Value.ToString()
 27852    };
 53
 25654    public bool Is(Status s) => Value == s;
 55
 23256    public static ServiceOrderStatus CreateReceived() => new(Status.Received);
 57}