< Summary

Information
Class: FLP.Application.Handlers.Bugs.UpdateBugHandler
Assembly: FLP.Application
File(s): /home/runner/work/FLP.AzureFunctions/FLP.AzureFunctions/FLP.Application/Handlers/Bugs/UpdateBugHandler.cs
Line coverage
77%
Covered lines: 21
Uncovered lines: 6
Coverable lines: 27
Total lines: 58
Line coverage: 77.7%
Branch coverage
50%
Covered branches: 5
Total branches: 10
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%
Handle()50%111080%

File(s)

/home/runner/work/FLP.AzureFunctions/FLP.AzureFunctions/FLP.Application/Handlers/Bugs/UpdateBugHandler.cs

#LineLine coverage
 1using AutoMapper;
 2using FLP.Application.Requests.Bugs;
 3using FLP.Application.Responses.Bugs;
 4using FLP.Application.Validators.Bugs;
 5using FLP.Core.Context.Shared;
 6using FLP.Core.Exceptions;
 7using FLP.Core.Interfaces.Repository;
 8using MediatR;
 9using Microsoft.Extensions.Logging;
 10
 11namespace FLP.Application.Handlers.Bugs;
 12
 413public class UpdateBugHandler(IUnitOfWork _uow, IMapper _mapper, ILogger<UpdateBugHandler> _logger) : IRequestHandler<Up
 14{
 15    public async Task<BaseResponse<GetBugByIdResponse>> Handle(UpdateBugRequest request, CancellationToken cancellationT
 416    {
 417        cancellationToken.ThrowIfCancellationRequested();
 18
 419        _logger.LogInformation("Handling UpdateBugRequest for Bug ID: {BugId}", request.Id);
 20
 21        // Validate the request
 422        var validator = new UpdateBugValidator();
 423        var validationResult = validator.Validate(request);
 424        if (!validationResult.IsValid)
 025        {
 026            _logger.LogWarning("Validation failed for UpdateBugRequest: {Errors}", validationResult.Errors);
 027            return new BaseResponse<GetBugByIdResponse>(false,validationResult.Errors.Select(e => e.ErrorMessage));
 28        }
 29
 430        _uow.BeginTransaction(cancellationToken);
 31
 432        var bug = await _uow.BugRepository.GetByIdAsync(request.Id, cancellationToken);
 33
 434        if (bug == null)
 035        {
 036            _logger.LogWarning("Bug with ID: {BugId} not found for update.", request.Id);
 037            return new BaseResponse<GetBugByIdResponse>(false,$"Bug with ID {request.Id} not found.");
 38        }
 39        // Map the request to the bug entity
 440        bug.Title = request.Title ?? bug.Title;
 441        bug.Description = request.Description ?? bug.Description;
 442        bug.UpdateStatus(request.Status);
 443        bug.AssignedToUserId = request.AssignedToUserId ?? bug.AssignedToUserId;
 44        // Update the bug in the repository
 445        await _uow.BugRepository.UpdateAsync(bug, cancellationToken);
 46
 47        // Save changes
 448        await _uow.SaveChangesAsync(cancellationToken);
 49
 50        // Commit the transaction
 451        _uow.CommitTransaction(cancellationToken);
 452        _logger.LogInformation("Bug with ID: {BugId} updated successfully.", request.Id);
 53
 454        var response = _mapper.Map<GetBugByIdResponse>(bug);
 55
 456        return new BaseResponse<GetBugByIdResponse>(response);
 457    }
 58}