public override string TryToExecute(CommandReceivedEventArgs eventArgs) { var word = eventArgs?.Arguments?.ElementAtOrDefault(1)?.ToLowerInvariant(); var newAlias = eventArgs?.Arguments?.ElementAtOrDefault(2)?.ToLowerInvariant(); var typeName = _repository.Single(CommandWordPolicy.ByWord(word))?.FullTypeName; var existingWord = _repository.Single(CommandWordPolicy.ByWord(newAlias)); if (string.IsNullOrEmpty(newAlias)) { return("You seem to be missing the new alias you want to set."); } if (existingWord != null) { return($"The command word '!{existingWord.CommandWord}' already exists."); } var newCommand = new CommandWordEntity { CommandWord = newAlias, FullTypeName = typeName, IsPrimary = false }; _repository.Create(newCommand); return($"Created new command alias '!{newAlias}' for '!{word}'."); }
public override string TryToExecute(CommandReceivedEventArgs eventArgs) { if (eventArgs?.Arguments == null || eventArgs.Arguments.Count < 3) { return(HelpText); } var word = eventArgs.Arguments[1].ToLowerInvariant(); var newAlias = eventArgs.Arguments[2].ToLowerInvariant(); var arguments = eventArgs.Arguments.Skip(3).ToList(); var typeName = _repository.Single(CommandWordPolicy.ByWord(word))?.FullTypeName; var existingWord = _repository.Single(CommandWordPolicy.ByWord(newAlias)); if (string.IsNullOrEmpty(newAlias)) { return("You seem to be missing the new alias you want to set."); } if (existingWord != null) { return($"The command word '!{existingWord.CommandWord}' already exists."); } var newCommand = new CommandWordEntity { CommandWord = newAlias, FullTypeName = typeName, IsPrimary = false }; for (int i = 0; i < arguments.Count; i++) { newCommand.Arguments.Add(new AliasArgumentEntity { Argument = arguments[i], CommandWordEntity = newCommand, Index = i }); } _repository.Create(newCommand); return($"Created new command alias '!{newAlias}' for '!{word}'."); }
public void NotSave_GivenAliasAlreadyUsed() { var commandReceivedEventArgs = new CommandReceivedEventArgs { Arguments = new[] { "add", "foo", "bar" } }; var mockRepo = new Mock <IRepository>(); var addAliasOperation = new AddAliasOperation(mockRepo.Object); var existingWord = new CommandWordEntity { CommandWord = Guid.NewGuid().ToString() }; mockRepo.Setup(x => x.Single(It.IsAny <CommandWordPolicy>())).Returns(existingWord); string message = addAliasOperation.TryToExecute(commandReceivedEventArgs); mockRepo.Verify(x => x.Create(It.IsAny <CommandWordEntity>()), Times.Never); message.Should().Contain(existingWord.CommandWord); }
public void SaveAlias_GivenValidArguments() { var newAlias = Guid.NewGuid().ToString(); var commandReceivedEventArgs = new CommandReceivedEventArgs { Arguments = new[] { "add", "foo", newAlias } }; var mockRepo = new Mock <IRepository>(); var addAliasOperation = new AddAliasOperation(mockRepo.Object); var existingWord = new CommandWordEntity { CommandWord = Guid.NewGuid().ToString() }; mockRepo.Setup(x => x.Single(It.IsAny <CommandWordPolicy>())) .Returns(existingWord); // call for type to alias mockRepo.Setup(x => x.Single(It.IsAny <CommandWordPolicy>())) .Returns(null as CommandWordEntity); // check for existing string message = addAliasOperation.TryToExecute(commandReceivedEventArgs); mockRepo.Verify(x => x.Create(It.IsAny <CommandWordEntity>()), Times.Once); message.Should().Contain(newAlias); }