public CreateCommand(string descricao, int[] idCategorias) { Descricao = descricao; IdCategorias = idCategorias; var validator = new CreateCommandValidator(); validation = validator.Validate(this); }
public void CreateCommandValidatorFailsIfProjectAlreadyExists() { var mockReservedDirectories = new Mock <IReservedDirectories>(); var mockFileSystem = new MockFileSystem(); const string projectName = "MyUnitTestProject"; const string outputDirectoryName = "public"; string projectRootPath = mockFileSystem.Path.Combine( Environment.CurrentDirectory, projectName); // Simulate the `Create` command already having been successfully run by // adding a directory with the same project name. mockFileSystem.AddDirectory(projectRootPath); var command = new CreateCommand { ProjectName = projectName, OutputDirectoryName = outputDirectoryName }; var validator = new CreateCommandValidator( mockFileSystem, mockReservedDirectories.Object); var validationResult = validator.Validate(command); string expectedErrorMessage = $"A Sculptor project with the name `{projectName}` already exists in the provided directory"; bool hasExpectedNumberOfErrors = validationResult.Errors.Count() == 1; bool hasExpectedErrorMessage = validationResult .Errors .Any(x => x.ErrorMessage == expectedErrorMessage); Assert.Multiple(() => { Assert.True(hasExpectedNumberOfErrors); Assert.True(hasExpectedErrorMessage); }); }
public void CreateCommandValidatorFailsForInvalidCommand( string projectName, string outputDirectoryName, int expectedNumberOfErrors) { var mockReservedDirectories = new Mock <IReservedDirectories>(); mockReservedDirectories .Setup(x => x.IsDirectoryNameReserved(It.IsAny <string>())) .Returns(true); var mockFileSystem = new MockFileSystem(); var command = new CreateCommand { ProjectName = projectName, OutputDirectoryName = outputDirectoryName }; var validator = new CreateCommandValidator( mockFileSystem, mockReservedDirectories.Object); var validationResult = validator.Validate(command); const string expectedErrorMessage = "Invalid path character(s) provided for:"; bool hasExpectedNumberOfErrors = validationResult.Errors.Count() == expectedNumberOfErrors; bool hasExpectedErrorMessage = validationResult .Errors .Any(x => x.ErrorMessage.StartsWith( expectedErrorMessage, StringComparison.Ordinal)); Assert.Multiple(() => { Assert.True(hasExpectedNumberOfErrors); Assert.True(hasExpectedErrorMessage); }); }
public void CreateCommandValidatorFailsIfOutputDirectoryMatchesReservedName() { var mockReservedDirectories = new Mock <IReservedDirectories>(); mockReservedDirectories .Setup(x => x.IsDirectoryNameReserved(It.IsAny <string>())) .Returns(true); var mockFileSystem = new MockFileSystem(); mockFileSystem.AddDirectory(Environment.CurrentDirectory); var command = new CreateCommand { ProjectName = "MyUnitTestProject", // It doesn't matter what this is set to as we have stubbed the // `IsDirectoryNameReserved` method above to always return true. OutputDirectoryName = "reserved-for-internal-use" }; var validator = new CreateCommandValidator( mockFileSystem, mockReservedDirectories.Object); var validationResult = validator.Validate(command); const string expectedErrorMessage = "The value provided for: `output` is reserved for internal use by Sculptor"; bool hasExpectedNumberOfErrors = validationResult.Errors.Count() == 1; bool hasExpectedErrorMessage = validationResult .Errors .Any(x => x.ErrorMessage == expectedErrorMessage); Assert.Multiple(() => { Assert.True(hasExpectedNumberOfErrors); Assert.True(hasExpectedErrorMessage); }); }
public void ShouldContainNoErrors() { // Arrange var command = new CreateCommand(login: "******", password: "******", firstName: "First Name", lastName: "Last Name"); // Act var validationResult = _validator.Validate(command); var exists = validationResult.Errors.Count > 0; // Assert exists.Should().BeFalse(); }