public async Task ExecuteAsync_ExecutesCommand() { var documentProcessorMock = new Mock <IDocumentProcessor>(); var command = new CommandForTest(documentProcessorMock.Object); var commandText = "command"; var modifiers = new[] { new Modifier { Name = "1" }, new Modifier { Name = "2" }, new Modifier { Name = "3" } }; var commandSubject = new DocumentIdSubject { Id = "subject" }; command.SetParameters(commandText, commandSubject, modifiers); await command.ExecuteAsync(); var exp = modifiers.Select(parameter => new ActionParameter { Name = parameter.Name, Data = parameter.Arguments }).ToArray(); documentProcessorMock.Verify( it => it.ProcessAsync(commandSubject, ActionType.GetContent, It.Is <ActionParameter[]>(p => CompareActionParameters(p, exp))), Times.Once); }
public void SetParameters_ValidParameters_SetsParameters() { var documentProcessorStub = new Mock <IDocumentProcessor>(); var command = new CommandForTest(documentProcessorStub.Object); var commandText = "command"; var modifiers = new[] { new Modifier { Name = "1" }, new Modifier { Name = "2" }, new Modifier { Name = "3" } }; var commandSubject = new DocumentIdSubject { Id = "subject" }; command.SetParameters(commandText, commandSubject, modifiers); Assert.Equal(commandText, command.CommandText); Assert.Equal(commandSubject, command.Subject); Assert.Equal(modifiers, command.Modifiers); }
public void Validate_ValidParameters_ValidValidationResult() { var documentProcessorStub = new Mock <IDocumentProcessor>(); var command = new CommandForTest(documentProcessorStub.Object); var commandText = "print"; var commandSubject = new DocumentIdSubject { Id = "test" }; var modifiers = new[] { new Modifier { Name = "decrypt" } }; command.SetParameters(commandText, commandSubject, modifiers); var validationResult = command.Validate(); Assert.True(validationResult.IsValid); Assert.Null(validationResult.ValidationMessage); }
public void Validate_DuplicatedParameters_InvalidValidationResult() { var documentProcessorStub = new Mock <IDocumentProcessor>(); var command = new CommandForTest(documentProcessorStub.Object); var commandText = "print"; var commandSubject = new DocumentIdSubject { Id = "test" }; var modifiers = new[] { new Modifier { Name = "decrypt" }, new Modifier { Name = "decrypt" } }; command.SetParameters(commandText, commandSubject, modifiers); var validationResult = command.Validate(); Assert.False(validationResult.IsValid); Assert.Equal("Invalid command modifiers: duplicates found", validationResult.ValidationMessage); }
public void Validate_InvalidParameters_InvalidValidationResult() { var documentProcessorStub = new Mock <IDocumentProcessor>(); var command = new CommandForTest(documentProcessorStub.Object); var commandText = CommandType.GetContent.ToString(); var commandSubject = new DocumentIdSubject { Id = "test" }; var modifiers = new[] { new Modifier { Name = "decrypt" }, new Modifier { Name = "encrypt" } }; command.SetParameters(commandText, commandSubject, modifiers); var validationResult = command.Validate(); Assert.False(validationResult.IsValid); Assert.Equal($"Invalid command modifiers: parameter 'encrypt' can't be used with the '{CommandType.GetContent.ToString().ToLower()}' command", validationResult.ValidationMessage); }