public void OrchestrateSqlReport_ForMissingParameter_FailsScan() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "UserSearchByUserKey.sql", "path\\sql\\theDB\\dbo\\Stored Procedures\\", SqlSamples.FindUserWithId } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); paramReportComparer .When(x => x.CompareReports(Arg.Any <SqlReport>(), Arg.Any <SqlReport>(), Arg.Any <List <string> >())) .Do(x => { var errors = (List <string>)x.Args()[2]; errors.Add("SomeId|param is defaulted in master but not in new code"); }); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", "reports\\scanResult.html", false); // Assert Assert.That(result, Is.EqualTo(false)); xmlWriter.DidNotReceive().WriteStartElement(Arg.Any <string>()); fileWrapper.Received(1).ReadAllText("reports\\data.xml"); htmlReportGenerator.Received(1).GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_ForDifferentCaseInFileVsScript_GetsCorrectCase() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "FindUserWithID.sql", "path\\sql\\theDB\\dbo\\Stored Procedures\\", SqlSamples.FindUserWithId } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", null, true); // Assert Assert.That(result, Is.EqualTo(true)); xmlWriter.Received(1).WriteStartElement(Arg.Any <string>()); xmlWriter.Received(1).SerializeSqlReportElement( Arg.Is <StoredProcedureReport>( x => x.SpName == "FindUserWithId")); xmlWriter.Received(1).SerializeSqlReportElement( Arg.Is <StoredProcedureReport>( x => x.SpName == "FindUserWithId")); xmlWriter.Received(1).WriteEndElement(); fileWrapper.DidNotReceive().ReadAllText("reports\\data.xml"); htmlReportGenerator.DidNotReceive().GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_ForCreateMasterReportWithVariables_CreatesMasterReportWithCorrectVariables() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "VariableReturns.sql", "path\\sql\\theDB\\dbo\\Stored Procedures\\", SqlSamples.VariableReturns } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", null, true); // Assert Assert.That(result, Is.EqualTo(true)); xmlWriter.Received(1).WriteStartElement(Arg.Any <string>()); xmlWriter.Received(1).SerializeSqlReportElement(Arg.Is <StoredProcedureReport>( x => x.ReturnValues[0].ReturnValueName == "Param1" && x.ReturnValues[1].ReturnValueName == "Param2" && x.ReturnValues[2].ReturnValueName == "@Variable1" && x.ReturnValues[3].ReturnValueName == "Param3 = 'abc'")); xmlWriter.Received(1).SerializeSqlReportElement(Arg.Any <StoredProcedureReport>()); xmlWriter.Received(1).WriteEndElement(); fileWrapper.DidNotReceive().ReadAllText("reports\\data.xml"); htmlReportGenerator.DidNotReceive().GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_MissingReportPath_ThrowsException() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "UserSearchByUserKey.sql", "path\\sql\\theDB\\dbo\\Stored Procedures\\", SqlSamples.FindUserWithId } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var ex = Assert.Throws <ArgumentException>( () => scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", null, false)); // Assert Assert.That(ex.Message, Is.EqualTo("report path cannot be null or empty.")); fileWrapper.DidNotReceive().ReadAllText(Arg.Any <string>()); xmlWriter.DidNotReceive().WriteStartElement(Arg.Any <string>()); fileWrapper.DidNotReceive().ReadAllText("reports\\data.xml"); htmlReportGenerator.DidNotReceive().GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_ForOutput_ParsesOutputValuesCorrectly() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "RetrieveOneUseCoupon.sql", "path\\sql\\theDB\\Schema55\\Stored Procedures\\", SqlSamples.RetrieveOneUseCoupon } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", "reports\\scanResult.html", false); // Assert Assert.That(result, Is.EqualTo(true)); xmlWriter.DidNotReceive().WriteStartElement(Arg.Any <string>()); fileWrapper.Received(1).ReadAllText("reports\\data.xml"); htmlReportGenerator.Received(1).GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_ForNoSqlFilesInFolder_Ignores() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var nonSqlDirectory = Substitute.For <IDirectoryInfoWrapper>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var directoryWrapper = Substitute.For <IDirectoryWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); sqlDirectories.Add(nonSqlDirectory); directoryWrapper.GetDirectories(Arg.Any <string>()) .Returns(sqlDirectories); var directoryFactory = Substitute.For <IDirectoryWrapperFactory>(); directoryFactory.CreateDirectoryWrapper(Arg.Any <string>()) .Returns(directoryWrapper); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", null, true); // Assert Assert.That(result, Is.EqualTo(true)); xmlWriter.Received(1).WriteStartElement(Arg.Any <string>()); xmlWriter.DidNotReceive().SerializeSqlReportElement(Arg.Any <StoredProcedureReport>()); xmlWriter.Received(1).WriteEndElement(); fileWrapper.DidNotReceive().ReadAllText("reports\\data.xml"); htmlReportGenerator.DidNotReceive().GenerateComparisonReport(Arg.Any <string>(), Arg.Any <List <string> >()); }
public void OrchestrateSqlReport_ForNamedVariables_CanParseNames() { // Setup var fileWrapper = Substitute.For <IFileWrapper>(); var xmlWriter = Substitute.For <IXmlStreamWriterWrapper>(); var xmlWrapper = Substitute.For <IXmlStreamWrapperFactory>(); var sqlDirectories = new List <IDirectoryInfoWrapper>(); var htmlReportGenerator = Substitute.For <IHtmlReportGenerator>(); var paramReportComparer = Substitute.For <IParamReportComparer>(); var returnReportComparer = Substitute.For <IReturnReportComparer>(); xmlWrapper.CreateXmlWriter(Arg.Any <string>()).Returns(xmlWriter); var sqlFileData = new List <List <List <string> > > { new List <List <string> > { new List <string> { "NameProcedure.sql", "path\\sql\\theDB\\dbo\\Stored Procedures\\", SqlSamples.NameProcedure } }, new List <List <string> >() }; var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); // Act var result = scanner.OrchestrateSqlReport( "path\\sql", "reports\\data.xml", null, true); // Assert Assert.That(result, Is.EqualTo(true)); }