< Summary - MechanicsSoftware — Coverage Report

Information
Class: MechanicsSoftware.Application.UseCases.Vehicles.Handlers.CreateVehicleHandler
Assembly: MechanicsSoftware.Application
File(s): /home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Application/UseCases/Vehicles/Handlers/CreateVehicleHandler.cs
Line coverage
100%
Covered lines: 17
Uncovered lines: 0
Coverable lines: 17
Total lines: 39
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
ExecuteAsync()100%44100%

File(s)

/home/runner/work/mechanics-software/mechanics-software/src/MechanicsSoftware.Application/UseCases/Vehicles/Handlers/CreateVehicleHandler.cs

#LineLine coverage
 1using MechanicsSoftware.Application.Abstractions;
 2using MechanicsSoftware.Application.Exceptions;
 3using MechanicsSoftware.Application.UseCases.Vehicles.Commands;
 4using MechanicsSoftware.Domain.Entities;
 5using MechanicsSoftware.Domain.Exceptions;
 6using MechanicsSoftware.Domain.ValueObjects;
 7using Microsoft.EntityFrameworkCore;
 8
 9namespace MechanicsSoftware.Application.UseCases.Vehicles.Handlers;
 10
 1011public sealed class CreateVehicleHandler(IAppDbContext db)
 12{
 13    public async Task<VehicleResponse> ExecuteAsync(
 14        CreateVehicleCommand command,
 15        CancellationToken cancellationToken = default)
 1016    {
 1017        var customerExists = await db.Customers
 1018            .AnyAsync(c => c.Id == command.CustomerId, cancellationToken);
 19
 1020        if (!customerExists)
 221            throw new NotFoundException(nameof(Customer), command.CustomerId);
 22
 823        var plate = new LicensePlate(command.LicensePlate);
 24
 625        var plateExists = await db.Vehicles
 626            .AnyAsync(v => v.LicensePlate == plate, cancellationToken);
 27
 628        if (plateExists)
 229            throw new DomainException($"License plate '{plate}' is already registered.");
 30
 431        var vehicle = Vehicle.Create(
 432            Guid.NewGuid(), plate, command.Make, command.Model, command.Year, command.CustomerId);
 33
 434        db.Vehicles.Add(vehicle);
 435        await db.SaveChangesAsync(cancellationToken);
 36
 437        return VehicleResponse.From(vehicle);
 438    }
 39}