예제 #1
0
        public void Should_Throw_Exception_If_Directory_Is_Empty()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            var rule = new EmptyDirectoryValidationRule();

            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldThrow <EmptyDirectoryException>()
            .WithMessage("Directory is empty. It should have script files");
        }
예제 #2
0
        public void Should_Not_Throw_Exception_If_Pattern_Is_Null_Or_Empty()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            TestFileSystem.CreateFile(workingDirectory, "Script_01.sql");
            TestFileSystem.CreateFile(workingDirectory, "Script_02.sql");

            var rule = new FileNamePatternValidationRule(pattern: null);
            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldNotThrow();
        }
        public void Should_Throw_Exception_When_Forbidden_Files_Found()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            TestFileSystem.CreateFile(baseDirectory: workingDirectory, fileName: "readme.txt");

            var rule = new FilesExtensionValidationRule();

            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldThrow <UnsupportedFileExtensionException>()
            .WithMessage("Only *.sql files are allowed");
        }
        public void Should_Throw_Exception_If_Directory_Has_Subdirectories()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            TestFileSystem.CreateSubdirectory(baseDirectory: workingDirectory, subdirectoryName: "subdir");

            var rule = new SubdirectoriesValidationRule();

            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldThrow <DirectoryHasSubdirectoriesException>()
            .WithMessage("Directory with database scripts must have no subdirectories");
        }
예제 #5
0
        public void Should_Throw_Exception_If_Gap_Between_Files()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            TestFileSystem.CreateFile(baseDirectory: workingDirectory, fileName: "0001_script.sql");
            TestFileSystem.CreateFile(baseDirectory: workingDirectory, fileName: "0003_script.sql");

            var rule = new FilesOrderValidationRule();

            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldThrow <WrongOrderException>()
            .WithMessage("There is a gap between scripts. Files should be contiguous");
        }
예제 #6
0
        public void Should_Throw_Exception_If_File_Name_Does_Not_Match_Pattern()
        {
            // arrange
            var workingDirectory = TestFileSystem.CreateTempWorkingDirectory();

            TestFileSystem.CreateFile(workingDirectory, "Script_01.sql");
            TestFileSystem.CreateFile(workingDirectory, "Script_02.sql");
            TestFileSystem.CreateFile(workingDirectory, "someWrongName.sql");

            var rule = new FileNamePatternValidationRule(@"^[a-zA-Z]+_\d\d\.sql$");

            // act & assert
            Action action = () => rule.Validate(workingDirectory);

            action.ShouldThrow <FileNameFormatException>()
            .WithMessage("File(s) with unexpected name format were found");
        }