< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Domain.Entities.PartItem
Assembly: MechanicsSoftware.Domain
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Domain/Entities/PartItem.cs
Line coverage
100%
Covered lines: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 53
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
get_Total()100%22100%
.ctor()100%11100%
Create(...)100%88100%

File(s)

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

#LineLine coverage
 1using MechanicsSoftware.Domain.Enums;
 2using MechanicsSoftware.Domain.Exceptions;
 3using MechanicsSoftware.Domain.ValueObjects;
 4
 5namespace MechanicsSoftware.Domain.Entities;
 6
 7public sealed class PartItem : Entity<Guid>
 8{
 9    public Guid ServiceOrderId { get; private set; }
 10    public Guid PartId { get; private set; }
 11    public string PartName { get; private set; } = null!;
 12    public Money UnitPrice { get; private set; } = null!;
 13    public int Quantity { get; private set; }
 14    public PartAvailability Availability { get; private set; }
 15
 1616    public Money Total => Availability == PartAvailability.Available
 1617        ? UnitPrice.Multiply(Quantity)
 1618        : new Money(0);
 19
 6620    private PartItem() { }
 21
 22    internal static PartItem Create(
 23        Guid serviceOrderId,
 24        Guid partId,
 25        string partName,
 26        Money unitPrice,
 27        int quantity,
 28        PartAvailability availability)
 3229    {
 3230        if (partId == Guid.Empty)
 231            throw new DomainException("PartId is required.");
 32
 3033        if (string.IsNullOrWhiteSpace(partName))
 434            throw new DomainException("Part name is required.");
 35
 2636        if (unitPrice is null)
 237            throw new DomainException("Unit price is required.");
 38
 2439        if (quantity <= 0)
 240            throw new DomainException("Quantity must be greater than zero.");
 41
 2242        return new PartItem
 2243        {
 2244            Id = Guid.NewGuid(),
 2245            ServiceOrderId = serviceOrderId,
 2246            PartId = partId,
 2247            PartName = partName.Trim(),
 2248            UnitPrice = unitPrice,
 2249            Quantity = quantity,
 2250            Availability = availability
 2251        };
 2252    }
 53}