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();
        }