< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Domain.Entities.ServiceItem
Assembly: MechanicsSoftware.Domain
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/Entities/ServiceItem.cs
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 46
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Total()100%11100%
.ctor()100%11100%
Create(...)100%88100%

File(s)

/home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/Entities/ServiceItem.cs

#LineLine coverage
 1using MechanicsSoftware.Domain.Exceptions;
 2using MechanicsSoftware.Domain.ValueObjects;
 3
 4namespace MechanicsSoftware.Domain.Entities;
 5
 6public sealed class ServiceItem : Entity<Guid>
 7{
 8    public Guid ServiceOrderId { get; private set; }
 9    public Guid ServiceId { get; private set; }
 10    public string ServiceName { get; private set; } = null!;
 11    public Money UnitPrice { get; private set; } = null!;
 12    public int Quantity { get; private set; }
 12413    public Money Total => UnitPrice.Multiply(Quantity);
 14
 34815    private ServiceItem() { }
 16
 17    internal static ServiceItem Create(
 18        Guid serviceOrderId,
 19        Guid serviceId,
 20        string serviceName,
 21        Money unitPrice,
 22        int quantity)
 11023    {
 11024        if (serviceId == Guid.Empty)
 225            throw new DomainException("ServiceId is required.");
 26
 10827        if (string.IsNullOrWhiteSpace(serviceName))
 428            throw new DomainException("Service name is required.");
 29
 10430        if (unitPrice is null)
 231            throw new DomainException("Unit price is required.");
 32
 10233        if (quantity <= 0)
 234            throw new DomainException("Quantity must be greater than zero.");
 35
 10036        return new ServiceItem
 10037        {
 10038            Id = Guid.NewGuid(),
 10039            ServiceOrderId = serviceOrderId,
 10040            ServiceId = serviceId,
 10041            ServiceName = serviceName.Trim(),
 10042            UnitPrice = unitPrice,
 10043            Quantity = quantity
 10044        };
 10045    }
 46}