public void ProcessPath_Processes_Directory_Of_Only_Of_Mixed_Files() { const string filePath1 = @"c:\dbscripts\file1.SQL"; const string filePath2 = @"c:\dbscripts\file2.txt"; const string filePath3 = @"c:\dbscripts\file3.sql"; const string filePath4 = @"c:\dbscripts\file4.Sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath("\" " + @"c:\DBScripts" + " \""); // Also testing removal of quotes and leading/trailing spaces ruleVisitor.Received().VisitRules(filePath1, Arg.Any <TextReader>()); ruleVisitor.DidNotReceive().VisitRules(filePath2, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <TextReader>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(3, processor.GetFileCount()); }
public void ProcessPath_Does_Not_Process_When_Not_File_Directory_Or_Wildcard() { const string filePath = "This doesnt exist"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = Substitute.For <IFileSystem>(); var fileBase = Substitute.For <FileBase>(); fileBase.Exists(filePath).Returns(false); fileSystem.File.Returns(fileBase); var directoryBase = Substitute.For <DirectoryBase>(); directoryBase.Exists(filePath).Returns(false); fileSystem.Directory.Returns(directoryBase); var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath(filePath); fileBase.Received().Exists(filePath); directoryBase.Received().Exists(filePath); ruleVisitor.DidNotReceive().VisitRules(filePath, Arg.Any <TextReader>()); reporter.Received().Report(string.Format("{0} is not a valid path.", filePath)); Assert.AreEqual(0, processor.GetFileCount()); }
public void ProcessPath_Processes_WildCard_When_It_Needs_To_Use_CurrentDirectory_Path() { const string filePath1 = @"c:\dbscripts\file1.SQL"; const string filePath2 = @"c:\dbscripts\file2.txt"; const string filePath3 = @"c:\dbscripts\file3.sql"; const string filePath4 = @"c:\dbscripts\file4.Sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") } }, @"c:\dbscripts"); // Set current directory var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath(@"file*.*"); ruleVisitor.Received().VisitRules(filePath1, Arg.Any <TextReader>()); ruleVisitor.DidNotReceive().VisitRules(filePath2, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <TextReader>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(3, processor.GetFileCount()); }
public void ProcessPath_InvalidPath_ShouldNotProcess() { // arrange const string filePath1 = @"c:\dbscripts\file1.txt"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var pluginHandler = Substitute.For <IPluginHandler>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(@"c:\DBScripts\invalid*.*"); // assert ruleVisitor.DidNotReceive().VisitRules(filePath1, Arg.Any <Stream>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(0, processor.FileCount); }
public void ProcessPath_Processes_Directory_Of_Files_And_Directories() { const string filePath1 = @"c:\dbscripts\file1.SQL"; const string filePath2 = @"c:\dbscripts\db1\file2.sql"; const string filePath3 = @"c:\dbscripts\db2\file3.sql"; const string filePath4 = @"c:\dbscripts\db2\sproc\file4.Sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath(@"c:\DBScripts"); ruleVisitor.Received().VisitRules(filePath1, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath2, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <TextReader>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <TextReader>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(4, processor.GetFileCount()); }
public void ProcessPath_WildcardInvalidDirectory_ShouldNotProcess() { // arrange const string sqlFilePath1 = @"c:\dbscripts\file1.SQL"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var pluginHandler = Substitute.For <IPluginHandler>(); var fileSystem = new MockFileSystem( new Dictionary <string, MockFileData> { { sqlFilePath1, new MockFileData("File1SQL") } }, @"c:\dbscripts"); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(@"c:\doesntExist\file*.*"); // assert ruleVisitor.DidNotReceive().VisitRules(sqlFilePath1, Arg.Any <Stream>()); Assert.AreEqual(0, processor.FileCount); }
public void ProcessPath_SingleFile_ShouldProcessFile() { // arrange const string filePath = "c:\\dbscripts\\myfile.sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var fileSystem = Substitute.For <IFileSystem>(); var fileBase = Substitute.For <FileBase>(); var pluginHandler = Substitute.For <IPluginHandler>(); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); fileBase.Exists(filePath).Returns(true); fileBase.OpenRead(filePath).Returns(ParsingUtility.GenerateStreamFromString("Some Sql To Parse")); fileSystem.File.Returns(fileBase); // act processor.ProcessPath("\" " + filePath + " \""); // Also testing removal of quotes and leading/trailing spaces // assert fileBase.Received().Exists(filePath); fileBase.Received().OpenRead(filePath); ruleVisitor.Received().VisitRules(filePath, Arg.Any <Stream>()); Assert.AreEqual(1, processor.FileCount); }
public void ProcessPath_InvalidPathSpecified_ShouldNotProcessFiles() { // arrange const string filePath = "This doesnt exist"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var fileSystem = Substitute.For <IFileSystem>(); var fileBase = Substitute.For <FileBase>(); var pluginHandler = Substitute.For <IPluginHandler>(); fileBase.Exists(filePath).Returns(false); fileSystem.File.Returns(fileBase); var directoryBase = Substitute.For <DirectoryBase>(); directoryBase.Exists(filePath).Returns(false); fileSystem.Directory.Returns(directoryBase); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(filePath); // assert fileBase.Received().Exists(filePath); directoryBase.Received().Exists(filePath); ruleVisitor.DidNotReceive().VisitRules(filePath, Arg.Any <Stream>()); reporter.Received().Report($"{filePath} is not a valid file path."); Assert.AreEqual(0, processor.FileCount); }
public void ProcessPath_Wildcard_ShouldOnlyProcessSqlFilesInCurrentDirectory() { // arrange var sqlFilePath1 = TestHelper.GetTestFilePath(@"c:\dbscripts\file1.SQL"); var txtFilePath2 = TestHelper.GetTestFilePath(@"c:\dbscripts\file2.txt"); var sqlFilePath3 = TestHelper.GetTestFilePath(@"c:\dbscripts\file3.sql"); var sqlFilePath4 = TestHelper.GetTestFilePath(@"c:\dbscripts\file4.Sql"); var sqlFilePath5 = TestHelper.GetTestFilePath(@"c:\file4.Sql"); var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var pluginHandler = Substitute.For <IPluginHandler>(); var fileSystem = new MockFileSystem( new Dictionary <string, MockFileData> { { sqlFilePath1, new MockFileData("File1SQL") }, { txtFilePath2, new MockFileData("File2SQL") }, { sqlFilePath3, new MockFileData("File3SQL") }, { sqlFilePath4, new MockFileData("File4SQL") }, { sqlFilePath5, new MockFileData("File5SQL") } }, TestHelper.GetTestFilePath(@"c:\dbscripts")); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(@"file*.*"); // assert ruleVisitor.Received().VisitRules(sqlFilePath1, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(sqlFilePath3, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(sqlFilePath4, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); // should not visit text files ruleVisitor.DidNotReceive().VisitRules(txtFilePath2, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); // should only visit files in current directory ruleVisitor.DidNotReceive().VisitRules(sqlFilePath5, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); Assert.AreEqual(3, processor.FileCount); }
public void ProcessPath_DirectorSpecifiedWildcard_ShouldOnlyProcessSqlFilesInSpecificDirectory() { // arrange const string filePath1 = @"c:\dbscripts\file1.SQL"; const string filePath2 = @"c:\dbscripts\file2.txt"; const string filePath3 = @"c:\dbscripts\file3.sql"; const string filePath4 = @"c:\dbscripts\file4.Sql"; const string filePath5 = @"c:\file4.Sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var pluginHandler = Substitute.For <IPluginHandler>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") }, { filePath5, new MockFileData("File5SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(@"c:\DBScripts\file*.*"); // assert ruleVisitor.Received().VisitRules(filePath1, Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <Stream>()); ruleVisitor.DidNotReceive().VisitRules(filePath2, Arg.Any <Stream>()); ruleVisitor.DidNotReceive().VisitRules(filePath5, Arg.Any <Stream>()); Assert.AreEqual(3, processor.FileCount); }
public void ProcessPath_Does_Not_Process_Files_When_WildCard_Does_Not_Find_Anything() { const string filePath1 = @"c:\dbscripts\file1.txt"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath(@"c:\DBScripts\oops*.*"); ruleVisitor.DidNotReceive().VisitRules(filePath1, Arg.Any <TextReader>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(0, processor.GetFileCount()); }
public void ProcessPath_PathWithSpaces_ShouldProcessFiles() { // arrange const string filePath1 = @"c:\dbscripts\file1.SQL"; const string filePath2 = @"c:\dbscripts\file2.txt"; const string filePath3 = @"c:\dbscripts\file3.sql"; const string filePath4 = @"c:\dbscripts\file4.Sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var pluginHandler = Substitute.For <IPluginHandler>(); var reporter = Substitute.For <IReporter>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath("\" " + @"c:\DBScripts" + " \""); // assert ruleVisitor.Received().VisitRules(filePath1, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.DidNotReceive().VisitRules(filePath2, Arg.Any <IEnumerable <IRuleException> >(), Arg.Any <Stream>()); Assert.AreEqual(3, processor.FileCount); }
public void ProcessPath_DirectorySpecified_ShouldProcessSubDirectories() { // arrange var filePath1 = TestHelper.GetTestFilePath(@"c:\dbscripts\file1.SQL"); var filePath2 = TestHelper.GetTestFilePath(@"c:\dbscripts\db1\file2.sql"); var filePath3 = TestHelper.GetTestFilePath(@"c:\dbscripts\db2\file3.sql"); var filePath4 = TestHelper.GetTestFilePath(@"c:\dbscripts\db2\sproc\file4.Sql"); var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IReporter>(); var pluginHandler = Substitute.For <IPluginHandler>(); var fileSystem = new MockFileSystem(new Dictionary <string, MockFileData> { { filePath1, new MockFileData("File1SQL") }, { filePath2, new MockFileData("File2SQL") }, { filePath3, new MockFileData("File3SQL") }, { filePath4, new MockFileData("File4SQL") } }); var processor = new SqlFileProcessor(ruleVisitor, pluginHandler, reporter, fileSystem); // act processor.ProcessPath(TestHelper.GetTestFilePath(@"c:\dbscripts")); // assert ruleVisitor.Received().VisitRules(filePath1, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath2, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath3, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); ruleVisitor.Received().VisitRules(filePath4, Arg.Any <IEnumerable <IExtendedRuleException> >(), Arg.Any <Stream>()); Assert.AreEqual(4, processor.FileCount); }
public void ProcessPath_Processes_Single_File_When_It_Exists() { const string filePath = "c:\\dbscripts\\myfile.sql"; var ruleVisitor = Substitute.For <IRuleVisitor>(); var reporter = Substitute.For <IBaseReporter>(); var fileSystem = Substitute.For <IFileSystem>(); var fileBase = Substitute.For <FileBase>(); fileBase.Exists(filePath).Returns(true); fileBase.ReadAllText(filePath).Returns("Some Sql To Parse"); fileSystem.File.Returns(fileBase); var processor = new SqlFileProcessor(ruleVisitor, reporter, fileSystem); processor.ProcessPath("\" " + filePath + " \""); // Also testing removal of quotes and leading/trailing spaces fileBase.Received().Exists(filePath); fileBase.Received().ReadAllText(filePath); ruleVisitor.Received().VisitRules(filePath, Arg.Any <TextReader>()); reporter.DidNotReceive().Report(Arg.Any <string>()); Assert.AreEqual(1, processor.GetFileCount()); }