Exemplo n.º 1
0
        public async Task <ActionResult> UpdateFriendshipStatus([FromRoute] int friendshipId, [FromBody] UpdateFriendshipStatusBody model, CancellationToken cancellationToken = default)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            FriendshipExistsQuery existsQuery = new FriendshipExistsQuery {
                FriendshipId = friendshipId
            };

            bool exists = await _mediator.Send(existsQuery, cancellationToken);

            if (!exists)
            {
                return(NotFound(new ErrorResource
                {
                    StatusCode = StatusCodes.Status404NotFound,
                    Message = $"Friendship with ID '{friendshipId}' does not exist"
                }));
            }

            UpdateFriendshipStatusCommand updateCommand = new UpdateFriendshipStatusCommand
            {
                FriendshipId       = friendshipId,
                FriendshipStatusId = model.FriendshipStatusId
            };

            await _mediator.Send(updateCommand, cancellationToken);

            return(NoContent());
        }
        public async Task UpdateFriendshipStatusCommandHandler_ShouldAddNewFriendshipChange()
        {
            // Arrange
            UpdateFriendshipStatusCommand request = new UpdateFriendshipStatusCommand
            {
                FriendshipId       = 1,
                FriendshipStatusId = FriendshipStatusId.Accepted
            };

            _unitOfWorkMock
            .Setup(m => m.FriendshipChanges.Add(It.IsAny <FriendshipChange>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            _unitOfWorkMock
            .Setup(m => m.CommitAsync(It.IsAny <CancellationToken>()))
            .ReturnsAsync(1);

            UpdateFriendshipStatusCommand.Handler handler = new UpdateFriendshipStatusCommand.Handler(_unitOfWorkMock.Object, _dateProviderMock.Object);

            // Act
            await handler.Handle(request);

            // Assert
            _unitOfWorkMock.Verify(m => m.FriendshipChanges.Add(It.IsAny <FriendshipChange>(), It.IsAny <CancellationToken>()));
            _unitOfWorkMock.Verify(m => m.CommitAsync(It.IsAny <CancellationToken>()));
        }