示例#1
0
        public CreateCommand(string descricao, int[] idCategorias)
        {
            Descricao    = descricao;
            IdCategorias = idCategorias;

            var validator = new CreateCommandValidator();

            validation = validator.Validate(this);
        }
示例#2
0
        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);
            });
        }
示例#3
0
        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);
            });
        }
示例#4
0
        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);
            });
        }
示例#5
0
        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();
        }