diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config deleted file mode 100644 index 51aef07..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/App.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj index ca32b5f..3ae911d 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj @@ -1,89 +1,18 @@ - - - - + + - Debug - AnyCPU - {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8} - Library - Properties - Cayan.Tool.SqlProjScanner.ConsoleApp.Test - Cayan.Tool.SqlProjScanner.ConsoleApp.Test - v4.8 - 512 - true - - - + net6.0 - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\Cayan.Tool.SqlProjScanner.ConsoleApp\bin\Debug\Microsoft.SqlServer.TransactSql.ScriptDom.dll - - - ..\..\..\..\packages\NSubstitute.2.0.3\lib\net45\NSubstitute.dll - - - ..\..\..\..\packages\NUnit.3.8.1\lib\net45\nunit.framework.dll - True - - - - - - - - - - - - - - - - True - True - SqlSamples.resx - Always - - - - - - {D0F124BE-0592-48EB-98E1-0815D09844EB} - Cayan.Tool.SqlProjScanner.ConsoleApp - - + - - ResXFileCodeGenerator - SqlSamples.Designer.cs - Always - Designer - + + + + + - - + - - \ No newline at end of file + + diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs deleted file mode 100644 index c7eed72..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5d8b4098-a3e8-4fff-b345-b116d3eb5aa8")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs index 11ab961..874b454 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/SqlFileScannerTests.cs @@ -22,6 +22,13 @@ public void OrchestrateSqlReport_ForCreateMasterReport_CreatesMasterReport() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -43,7 +50,7 @@ public void OrchestrateSqlReport_ForCreateMasterReport_CreatesMasterReport() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -72,6 +79,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithVariables_CreatesMaste var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -93,7 +107,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithVariables_CreatesMaste SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -129,6 +143,14 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithMultipleSelects_Create var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; + xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -150,7 +172,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithMultipleSelects_Create SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -186,6 +208,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportAndHiddenSelectStatements_ var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -207,7 +236,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportAndHiddenSelectStatements_ SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -239,6 +268,13 @@ public void OrchestrateSqlReport_ForVariableSetters_CreatesMasterReport() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -260,7 +296,7 @@ public void OrchestrateSqlReport_ForVariableSetters_CreatesMasterReport() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -292,6 +328,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithUnionSp_CreatesMasterR var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -313,7 +356,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithUnionSp_CreatesMasterR SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -345,6 +388,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithStar_CreatesMasterRepo var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -366,7 +416,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportWithStar_CreatesMasterRepo SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -395,6 +445,13 @@ public void OrchestrateSqlReport_ForCreateMasterReportNoBegin_CreatesMasterRepor var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -416,7 +473,7 @@ public void OrchestrateSqlReport_ForCreateMasterReportNoBegin_CreatesMasterRepor SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -447,6 +504,13 @@ public void OrchestrateSqlReport_ForNoSqlFilesInFolder_Ignores() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -462,7 +526,7 @@ var directoryFactory .Returns(directoryWrapper); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -491,6 +555,13 @@ public void OrchestrateSqlReport_MissingDirectoryPath_ThrowsException() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -512,7 +583,7 @@ public void OrchestrateSqlReport_MissingDirectoryPath_ThrowsException() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var ex = Assert.Throws( @@ -541,6 +612,13 @@ public void OrchestrateSqlReport_MissingDatafilePath_ThrowsException() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -562,7 +640,7 @@ public void OrchestrateSqlReport_MissingDatafilePath_ThrowsException() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var ex = Assert.Throws( @@ -591,6 +669,13 @@ public void OrchestrateSqlReport_MissingReportPath_ThrowsException() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -612,7 +697,7 @@ public void OrchestrateSqlReport_MissingReportPath_ThrowsException() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var ex = Assert.Throws( @@ -641,6 +726,13 @@ public void OrchestrateSqlReport_ForDifferentCaseInFileVsScript_GetsCorrectCase( var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -662,7 +754,7 @@ public void OrchestrateSqlReport_ForDifferentCaseInFileVsScript_GetsCorrectCase( SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -699,6 +791,13 @@ public void OrchestrateSqlReport_ForDoNotCreateMasterReport_DoesComparison() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -720,7 +819,7 @@ public void OrchestrateSqlReport_ForDoNotCreateMasterReport_DoesComparison() var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); - var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -747,6 +846,13 @@ public void OrchestrateSqlReport_ForComplexQuery_ParsesReturnValuesCorrectly() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -768,7 +874,7 @@ public void OrchestrateSqlReport_ForComplexQuery_ParsesReturnValuesCorrectly() var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); - var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -794,6 +900,13 @@ public void OrchestrateSqlReport_ForOutput_ParsesOutputValuesCorrectly() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -815,7 +928,7 @@ public void OrchestrateSqlReport_ForOutput_ParsesOutputValuesCorrectly() var directoryFactory = SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); - var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -843,6 +956,13 @@ public void OrchestrateSqlReport_ForMissingParameter_FailsScan() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; fileWrapper.ReadAllText("reports\\data.xml").Returns(SqlSamples.ReportSampleXml); xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -874,7 +994,7 @@ public void OrchestrateSqlReport_ForMissingParameter_FailsScan() }); var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, - returnReportComparer); + returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -901,6 +1021,13 @@ public void OrchestrateSqlReport_ForNoParameters_DoesNotThrowException() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -923,7 +1050,7 @@ public void OrchestrateSqlReport_ForNoParameters_DoesNotThrowException() var scanner = new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, - returnReportComparer); + returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( @@ -956,6 +1083,13 @@ public void OrchestrateSqlReport_ForCannotParseSql_ThrowsException() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -977,7 +1111,7 @@ public void OrchestrateSqlReport_ForCannotParseSql_ThrowsException() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var ex = Assert.Throws( @@ -1005,6 +1139,13 @@ public void OrchestrateSqlReport_ForNamedVariables_CanParseNames() var htmlReportGenerator = Substitute.For(); var paramReportComparer = Substitute.For(); var returnReportComparer = Substitute.For(); + var config = new Configuration + { + AppSettings = { + SchemaIgnoreListFileName = "", + StoredProcedureDirectoryName = "Stored Procedures" + } + }; xmlWrapper.CreateXmlWriter(Arg.Any()).Returns(xmlWriter); @@ -1026,7 +1167,7 @@ public void OrchestrateSqlReport_ForNamedVariables_CanParseNames() SimulateSqlFiles("path\\sql", sqlFileData, fileWrapper, sqlDirectories); var scanner = - new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer); + new SqlFileScanner(fileWrapper, xmlWrapper, directoryFactory, htmlReportGenerator, paramReportComparer, returnReportComparer, config); // Act var result = scanner.OrchestrateSqlReport( diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config b/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config deleted file mode 100644 index 10588e9..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp.Test/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config b/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config deleted file mode 100644 index 8fd8496..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/App.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs new file mode 100644 index 0000000..3dd4e30 --- /dev/null +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/AppSettings.cs @@ -0,0 +1,8 @@ +namespace Cayan.Tool.SqlProjScanner.ConsoleApp +{ + public class AppSettings + { + public string StoredProcedureDirectoryName { get; set; } + public string SchemaIgnoreListFileName { get; set; } + } +} diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj b/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj index c000d76..2a16455 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Cayan.Tool.SqlProjScanner.ConsoleApp.csproj @@ -1,120 +1,47 @@ - - - + + - Debug - AnyCPU - {D0F124BE-0592-48EB-98E1-0815D09844EB} Exe - Cayan.Tool.SqlProjScanner.ConsoleApp - SqlScanner - v4.8 - 512 - true - true - + net6.0 - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.Data.Tools.Schema.Sql.dll - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.Data.Tools.Utilities.dll - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Dac.dll - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Dac.Extensions.dll - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.TransactSql.ScriptDom.dll - - - ..\..\..\..\packages\Microsoft.SqlServer.DacFx.x64.150.4384.2\lib\net46\Microsoft.SqlServer.Types.dll - - - - - - - + - - - - - - - - True + True + True ConsoleOutput.resx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + ResXFileCodeGenerator ConsoleOutput.Designer.cs - Designer - - \ No newline at end of file + + + + + + + + + <_Parameter1>Cayan.Tool.SqlProjScanner.ConsoleApp.Test + + + + + + + + + + + + + Always + + + + diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs new file mode 100644 index 0000000..edf805d --- /dev/null +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Configuration.cs @@ -0,0 +1,12 @@ +namespace Cayan.Tool.SqlProjScanner.ConsoleApp +{ + public class Configuration + { + public AppSettings AppSettings { get; set; } + + public Configuration() + { + AppSettings = new AppSettings(); + } + } +} \ No newline at end of file diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs index 0b17196..2501c98 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/Program.cs @@ -1,10 +1,18 @@ namespace Cayan.Tool.SqlProjScanner.ConsoleApp { + using Microsoft.Extensions.Configuration; + class Program { static int Main(string[] args) { - var sqlReportManager = new SqlReportConsoleManager(); + var configBuilder = new ConfigurationBuilder() + .AddJsonFile("appsettings.json") + .Build(); + + var config = configBuilder.Get(); + + var sqlReportManager = new SqlReportConsoleManager(config); return sqlReportManager.MakeSqlReport(args); } diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs deleted file mode 100644 index 20feba8..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Cayan.Tool.SqlProjScanner.ConsoleApp")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Cayan.Tool.SqlProjScanner.ConsoleApp")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: InternalsVisibleTo("Cayan.Tool.SqlProjScanner.ConsoleApp.Test")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("d0f124be-0592-48eb-98e1-0815d09844eb")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs index 993ff86..176220f 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlFileScanner.cs @@ -3,7 +3,6 @@ using Microsoft.SqlServer.TransactSql.ScriptDom; using ReportObjects; using System; - using System.Configuration; using System.IO; using System.Linq; using System.Collections.Generic; @@ -20,16 +19,15 @@ public class SqlFileScanner : ISqlFileScanner private readonly IParamReportComparer _paramReportComparer; private readonly IReturnReportComparer _returnReportComparer; - private readonly string _storedProcedureDirectoryName = - ConfigurationManager.AppSettings["StoredProcedureDirectoryName"]; + private readonly string _storedProcedureDirectoryName; - private readonly string _schemaIgnoreListFileName = - ConfigurationManager.AppSettings["SchemaIgnoreListFileName"]; + private readonly string _schemaIgnoreListFileName; - public SqlFileScanner() + public SqlFileScanner(Configuration config) :this(new FileWrapper(), new XmlStreamWrapperFactory(), new DirectoryWrapperFactory(), new HtmlReportGenerator(), - new ParamReportComparer(), new ReturnReportComparer()) + new ParamReportComparer(), new ReturnReportComparer(), + config) { } @@ -38,7 +36,8 @@ internal SqlFileScanner(IFileWrapper fileWrapper, IDirectoryWrapperFactory directoryWrapperFactory, IHtmlReportGenerator htmlReportGenerator, IParamReportComparer paramReportComparer, - IReturnReportComparer returnReportComparer) + IReturnReportComparer returnReportComparer, + Configuration config) { _fileWrapper = fileWrapper; @@ -51,6 +50,9 @@ internal SqlFileScanner(IFileWrapper fileWrapper, _returnReportComparer = returnReportComparer; _sqlReport = new SqlReport(); + + _storedProcedureDirectoryName = config.AppSettings.StoredProcedureDirectoryName; + _schemaIgnoreListFileName = config.AppSettings.SchemaIgnoreListFileName; } public bool OrchestrateSqlReport(string sqlCodePath, string dataFilePath, diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs index 8e3a3b4..6d73ca5 100644 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/SqlReportConsoleManager.cs @@ -12,8 +12,8 @@ public class SqlReportConsoleManager private const int SuccessReturnValue = 0; private const int FailureReturnValue = 2; - public SqlReportConsoleManager() - : this(new SqlFileScanner(), new ConsoleWrapper()) + public SqlReportConsoleManager(Configuration config) + : this(new SqlFileScanner(config), new ConsoleWrapper()) { } diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json b/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json new file mode 100644 index 0000000..4c17f49 --- /dev/null +++ b/Cayan.Tool.SqlProjScanner.ConsoleApp/appsettings.json @@ -0,0 +1,6 @@ +{ + "AppSettings": { + "StoredProcedureDirectoryName": "Stored Procedures", + "SchemaIgnoreListFileName": "SchemaIgnoreList.txt" + } +} \ No newline at end of file diff --git a/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config b/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config deleted file mode 100644 index a9f7e81..0000000 --- a/Cayan.Tool.SqlProjScanner.ConsoleApp/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/SqlCodeScanner.sln b/SqlCodeScanner.sln index c35198a..d298c6a 100644 --- a/SqlCodeScanner.sln +++ b/SqlCodeScanner.sln @@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29215.179 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp", "Cayan.Tool.SqlProjScanner.ConsoleApp\Cayan.Tool.SqlProjScanner.ConsoleApp.csproj", "{D0F124BE-0592-48EB-98E1-0815D09844EB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp", "Cayan.Tool.SqlProjScanner.ConsoleApp\Cayan.Tool.SqlProjScanner.ConsoleApp.csproj", "{7B0EBAB4-09A5-4277-B4A8-A8F68094C193}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp.Test", "Cayan.Tool.SqlProjScanner.ConsoleApp.Test\Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj", "{5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cayan.Tool.SqlProjScanner.ConsoleApp.Test", "Cayan.Tool.SqlProjScanner.ConsoleApp.Test\Cayan.Tool.SqlProjScanner.ConsoleApp.Test.csproj", "{676A391F-5420-4874-B088-CF25E35BB729}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -13,14 +13,14 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D0F124BE-0592-48EB-98E1-0815D09844EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D0F124BE-0592-48EB-98E1-0815D09844EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D0F124BE-0592-48EB-98E1-0815D09844EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D0F124BE-0592-48EB-98E1-0815D09844EB}.Release|Any CPU.Build.0 = Release|Any CPU - {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5D8B4098-A3E8-4FFF-B345-B116D3EB5AA8}.Release|Any CPU.Build.0 = Release|Any CPU + {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7B0EBAB4-09A5-4277-B4A8-A8F68094C193}.Release|Any CPU.Build.0 = Release|Any CPU + {676A391F-5420-4874-B088-CF25E35BB729}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {676A391F-5420-4874-B088-CF25E35BB729}.Debug|Any CPU.Build.0 = Debug|Any CPU + {676A391F-5420-4874-B088-CF25E35BB729}.Release|Any CPU.ActiveCfg = Release|Any CPU + {676A391F-5420-4874-B088-CF25E35BB729}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE