< Summary

Information
Class: planora.Application.Features.Activities.Commands.Update.UpdateActivityHandler
Assembly: planora.Application
File(s): /home/runner/work/planora/planora/src/planora.Application/Features/Activities/Commands/Update/UpdateActivityHandler.cs
Tag: 10_15767155620
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 29
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
Handle()100%22100%

File(s)

/home/runner/work/planora/planora/src/planora.Application/Features/Activities/Commands/Update/UpdateActivityHandler.cs

#LineLine coverage
 1using planora.Application.Common;
 2using planora.Application.Interfaces.Mediator;
 3using planora.Domain.Entities;
 4using planora.Domain.Errors;
 5using planora.Domain.Repositories;
 6
 7namespace planora.Application.Features.Activities.Commands.Update;
 8
 49public sealed class UpdateActivityHandler(IRepository<Activity> repository)
 10    : ICommandHandler<UpdateActivityRequest, Result>
 11{
 12    public async Task<Result> Handle(UpdateActivityRequest request, CancellationToken cancellationToken)
 13    {
 414        var activityId = request.Id;
 415        var existingActivity = await repository.GetByIdAsync(activityId, cancellationToken);
 16
 417        if (existingActivity is null)
 18        {
 219            return ActivityError.NotFound(activityId);
 20        }
 21
 22        // Map the existing activity to an updated one, only changing properties that were specified
 223        var updatedActivity = existingActivity.MapToUpdatedEntity(request);
 24
 225        await repository.UpdateAsync(updatedActivity, cancellationToken);
 26
 227        return Result.Success();
 428    }
 29}