public async Task ShouldReturnErrorWhenAdministratorIdDoesNotMatch() { Guid channelId = Guid.NewGuid(); Guid adminstratorId = Guid.NewGuid(); Guid commandAdministratorId = Guid.NewGuid(); string channelName = "channelOne"; var fakeUserRepository = new Mock <IUserRepository>(); var fakeChannelRepository = new Mock <IChannelRepository>(); fakeChannelRepository .Setup(repository => repository.GetById(It.IsAny <Guid>())) .ReturnsAsync((Guid id) => new GetChannelByIdQueryResult { Id = channelId, Name = channelName, AdministratorId = adminstratorId }); var command = new UpdateChannelNameCommand { Id = channelId, Name = channelName, AdministratorId = commandAdministratorId }; var handler = new ChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); }
public async Task <ICommandResult> HandleAsync(UpdateChannelNameCommand command) { command.Validate(); if (command.Invalid) { AddNotifications(command); return(new CommandResult(false, "Could not update channel name", Errors)); } GetChannelByIdQueryResult channel = await _channelRepository.GetById(command.Id); if (channel is null) { AddNotification(nameof(command.Id), "Channel not found"); return(new CommandResult(false, "Could not update channel name", Errors)); } if (command.AdministratorId != channel.AdministratorId) { AddNotification(nameof(command.AdministratorId), "AdministratorId does't match channel administrator id"); return(new CommandResult(false, "User does't have permission to update channel name", Errors)); } if (channel.Name != command.Name) { await _channelRepository.UpdateChannelName(command.Id, command.Name); } return(new CommandResult(true, "Name successfully updated", new ChannelOutput { Id = command.Id, Name = command.Name })); }
public void ShouldReturnErrorWhenNameLenghtIsGreaterThan32() { var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = "PS15TihJoUQEydtvAZFa5SeaHcDNdosgagsPHrLI", AdministratorId = Guid.NewGuid() }; command.Validate(); command.Invalid.Should().BeTrue(); }
public void ShouldReturnErrorWhenNameIsNull() { var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = null, AdministratorId = Guid.NewGuid() }; command.Validate(); command.Invalid.Should().BeTrue(); }
public void ShouldReturnSuccessWhenCommandIsValid() { var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = "channelTwo", AdministratorId = Guid.NewGuid() }; command.Validate(); command.Valid.Should().BeTrue(); }
public async Task ShouldReturnErrorWhenNameLenghtIsGreaterThan32() { var fakeUserRepository = new Mock <IUserRepository>(); var fakeChannelRepository = new Mock <IChannelRepository>(); var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = "PS15TihJoUQEydtvAZFa5SeaHcDNdosgagsPHrLI", AdministratorId = Guid.NewGuid() }; var handler = new ChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); }
public async Task ShouldReturnErrorWhenNameIsNull() { var fakeUserRepository = new Mock <IUserRepository>(); var fakeChannelRepository = new Mock <IChannelRepository>(); var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = null, AdministratorId = Guid.NewGuid() }; var handler = new ChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); }
public async Task <ActionResult> UpdateChannelName(UpdateChannelNameViewModel data, [FromRoute] Guid id, [FromHeader] Guid authorization, [FromServices] IHandler <UpdateChannelNameCommand> handler) { var command = new UpdateChannelNameCommand { Id = id, Name = data.Name, AdministratorId = authorization }; ICommandResult result = await handler.HandleAsync(command); if (!result.Success) { return(BadRequest(new ErrorViewModel(result))); } return(NoContent()); }
public async Task ShouldReturnErrorWhenChannelNotFound() { var fakeUserRepository = new Mock <IUserRepository>(); var fakeChannelRepository = new Mock <IChannelRepository>(); fakeChannelRepository .Setup(repository => repository.GetById(It.IsAny <Guid>())) .Returns(Task.FromResult <GetChannelByIdQueryResult>(null)); var command = new UpdateChannelNameCommand { Id = Guid.NewGuid(), Name = "default", AdministratorId = Guid.NewGuid() }; var handler = new ChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); result.Success.Should().BeFalse(); result.Errors.Should().HaveCountGreaterThan(0); handler.Invalid.Should().BeTrue(); }
public async Task ShouldReturnSuccessWhenNamesAreNotEqual() { Guid channelId = Guid.NewGuid(); Guid adminstratorId = Guid.NewGuid(); string channelName = "newer name"; var fakeUserRepository = new Mock <IUserRepository>(); var fakeChannelRepository = new Mock <IChannelRepository>(); fakeChannelRepository .Setup(repository => repository.GetById(It.IsAny <Guid>())) .ReturnsAsync((Guid id) => new GetChannelByIdQueryResult { Id = channelId, Name = "older name", AdministratorId = adminstratorId }); var command = new UpdateChannelNameCommand { Id = channelId, Name = channelName, AdministratorId = adminstratorId }; var handler = new ChannelHandler(fakeChannelRepository.Object, fakeUserRepository.Object); ICommandResult result = await handler.HandleAsync(command); var resultOutput = result.Data as ChannelOutput; result.Success.Should().BeTrue(); result.Data.Should().NotBeNull(); result.Errors.Should().BeNullOrEmpty(); resultOutput.Should().NotBeNull(); resultOutput?.Name.Should().Be(command.Name); handler.Valid.Should().BeTrue(); fakeChannelRepository.Verify( repository => repository.UpdateChannelName(It.Is <Guid>(id => id == command.Id), It.Is <string>(name => name == command.Name)), Times.Once()); }