< Summary

Information
Class: ClutterStock.Domain.Features.Items.UpdateItem.UpdateItemCommandHandler
Assembly: Domain
File(s): /home/runner/work/ClutterStock/ClutterStock/backend/src/Domain/Features/Items/UpdateItem/UpdateItemCommandHandler.cs
Tag: 58_25416222083
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 35
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%
HandleAsync()100%22100%

File(s)

/home/runner/work/ClutterStock/ClutterStock/backend/src/Domain/Features/Items/UpdateItem/UpdateItemCommandHandler.cs

#LineLine coverage
 1using ClutterStock.Contracts.Items;
 2using ClutterStock.Domain.Abstractions;
 3using ClutterStock.Domain.Extensions;
 4using Microsoft.AspNetCore.Http;
 5using Microsoft.AspNetCore.Http.HttpResults;
 6using Microsoft.EntityFrameworkCore;
 7
 8namespace ClutterStock.Domain.Features.Items.UpdateItem;
 9
 10public interface IUpdateItemCommandHandler : ICommandHandler
 11{
 12    Task<Results<Ok<ItemResponse>, NotFound>> HandleAsync(Command command, CancellationToken cancellationToken = default
 13
 14    record Command(int Id, int RoomId, string Name, string? Description, string? Category, string? Notes);
 15}
 16
 217public class UpdateItemCommandHandler(IAppDbContext context) : IUpdateItemCommandHandler
 18{
 19    public async Task<Results<Ok<ItemResponse>, NotFound>> HandleAsync(IUpdateItemCommandHandler.Command command, Cancel
 20    {
 221        var item = await context.Items.FirstOrDefaultAsync(i => i.Id == command.Id, cancellationToken);
 222        if (item is null)
 123            return TypedResults.NotFound();
 24
 125        item.RoomId = command.RoomId;
 126        item.Name = command.Name;
 127        item.Description = command.Description;
 128        item.Category = command.Category;
 129        item.Notes = command.Notes;
 130        item.UpdatedAtUtc = DateTimeOffset.UtcNow;
 31
 132        await context.SaveChangesAsync(cancellationToken);
 133        return TypedResults.Ok(item.ToResponse());
 234    }
 35}