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"); }
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"); }
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"); }
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"); }