diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0de9c9a..572e36e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: os: [ windows-2022, ubuntu-22.04, macOS-14 ] - dotnet-version: [ '3.1.x', '6.0.x', '7.0.x', '8.0.x' ] + dotnet-version: [ '3.1.x', '5.0.x', '6.0.x', '7.0.x', '8.0.x', '9.0.x' ] steps: - name: Checkout Repository @@ -31,14 +31,28 @@ jobs: with: dotnet-version: ${{ matrix.dotnet-version }} - - name: Find And Replace Values (App Config) + - name: Find And Replace Values (App Settings) uses: abhinavminhas/replace-tokens@main with: - files: '${{ github.workspace }}/QueryDB.Core.Tests/App.config' + files: '${{ github.workspace }}/QueryDB.Core.Tests/appsettings.json' replacements: '__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }}' - - name: Build - run: dotnet build QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + - name: Build (${{ matrix.dotnet-version }}) + shell: bash + run: | + if [[ "${{ matrix.dotnet-version }}" == "3.1"* ]]; then + dotnet build -f netcoreapp3.1 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + elif [[ "${{ matrix.dotnet-version }}" == "5.0"* ]]; then + dotnet build -f net5.0 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + elif [[ "${{ matrix.dotnet-version }}" == "6.0"* ]]; then + dotnet build -f net6.0 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + elif [[ "${{ matrix.dotnet-version }}" == "7.0"* ]]; then + dotnet build -f net7.0 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + elif [[ "${{ matrix.dotnet-version }}" == "8.0"* ]]; then + dotnet build -f net8.0 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + elif [[ "${{ matrix.dotnet-version }}" == "9.0"* ]]; then + dotnet build -f net9.0 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + fi - name: Docker Compose (Start - DB Containers) if: ${{ (matrix.os == 'ubuntu-22.04') && (matrix.dotnet-version == '3.1.x') }} @@ -58,9 +72,9 @@ jobs: with: dbPassword: ${{ secrets.DB_PASSWORD }} - - name: Test + - name: Test (${{ matrix.dotnet-version }}) if: ${{ (matrix.os == 'ubuntu-22.04') && (matrix.dotnet-version == '3.1.x') }} - run: dotnet test --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS + run: dotnet test --framework netcoreapp3.1 --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS - name: Docker Compose (Tear Down - DB Containers) if: ${{ (matrix.os == 'ubuntu-22.04') && (matrix.dotnet-version == '3.1.x') && always() }} @@ -86,14 +100,14 @@ jobs: with: dotnet-version: ${{ matrix.dotnet-version }} - - name: Find And Replace Values (App Config) + - name: Find And Replace Values (App Settings) uses: abhinavminhas/replace-tokens@main with: - files: '${{ github.workspace }}/QueryDB.Core.Tests/App.config' + files: '${{ github.workspace }}/QueryDB.Core.Tests/appsettings.json' replacements: '__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }}' - - name: Build - run: dotnet build QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + - name: Build (${{ matrix.dotnet-version }}) + run: dotnet build -f netcoreapp3.1 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release - name: Docker Compose (Start - DB Containers) uses: ./.github/workflows/docker-compose-start-dbs @@ -110,8 +124,8 @@ jobs: with: dbPassword: ${{ secrets.DB_PASSWORD }} - - name: Test - run: dotnet test --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS /p:CollectCoverage=true /p:CoverletOutputFormat=lcov + - name: Test (${{ matrix.dotnet-version }}) + run: dotnet test --framework netcoreapp3.1 --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS /p:CollectCoverage=true /p:CoverletOutputFormat=lcov - name: Docker Compose (Tear Down - DB Containers) if: always() diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 8d6f1db..e2db10a 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -22,14 +22,14 @@ jobs: with: dotnet-version: ${{ matrix.dotnet-version }} - - name: Find And Replace Values (App Config) + - name: Find And Replace Values (App Settings) uses: abhinavminhas/replace-tokens@main with: - files: '${{ github.workspace }}/QueryDB.Core.Tests/App.config' + files: '${{ github.workspace }}/QueryDB.Core.Tests/appsettings.json' replacements: '__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }},__DB_PASSWORD__=${{ secrets.DB_PASSWORD }}' - - name: Build - run: dotnet build QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release + - name: Build (${{ matrix.dotnet-version }}) + run: dotnet build -f netcoreapp3.1 QueryDB.Core.Tests/QueryDB.Core.Tests.csproj --configuration Release - name: Docker Compose (Start - DB Containers) uses: ./.github/workflows/docker-compose-start-dbs @@ -46,8 +46,8 @@ jobs: with: dbPassword: ${{ secrets.DB_PASSWORD }} - - name: Test - run: dotnet test --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS /p:CollectCoverage=true /p:CoverletOutputFormat=lcov + - name: Test (${{ matrix.dotnet-version }}) + run: dotnet test --framework netcoreapp3.1 --no-build --logger "console;verbosity=detailed" --verbosity normal --configuration Release --filter TestCategory=DB-TESTS /p:CollectCoverage=true /p:CoverletOutputFormat=lcov - name: Docker Compose (Tear Down - DB Containers) uses: ./.github/workflows/docker-compose-teardown-dbs diff --git a/.github/workflows/publish-nuget-Package.yml b/.github/workflows/publish-nuget-Package.yml new file mode 100644 index 0000000..db9f86a --- /dev/null +++ b/.github/workflows/publish-nuget-Package.yml @@ -0,0 +1,32 @@ +name: Publish Nuget Package + +env: + NUGET_PACKAGE_NAME_VERSION: "QueryDB.1.0.0.nupkg" + +on: + workflow_dispatch: + +jobs: + build: + name: Publish Nuget Package + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ ubuntu-22.04 ] + dotnet-version: [ '3.1.x' ] + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Dotnet Version (${{ matrix.dotnet-version }}) + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '3.1.x' + + - name: Create Package + run: dotnet pack --configuration=Release QueryDB/QueryDB.csproj + + - name: Publish Nuget Package + run: dotnet nuget push QueryDB/bin/Release/${{ env.NUGET_PACKAGE_NAME_VERSION }} -s https://api.nuget.org/v3/index.json -k ${{ secrets.NUGET_API_KEY }} + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..dec4197 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog +All notable changes to this project documented here. + +## [Released] + +## [1.0.0](https://www.nuget.org/packages/QueryDB/1.0.0) - 2025-02-18 +### Added +- QueryDB framework for simplified querying and executing transactions across multiple database systems. + - Retrieve data from database. + - Execute database commands. + - Execute transactions while maintaining atomicity. \ No newline at end of file diff --git a/QueryDB.Core.Tests/App.config b/QueryDB.Core.Tests/App.config deleted file mode 100644 index 3830d0f..0000000 --- a/QueryDB.Core.Tests/App.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/QueryDB.Core.Tests/MSSQLTests.cs b/QueryDB.Core.Tests/MSSQLTests.cs index 92f072e..a2bedec 100644 --- a/QueryDB.Core.Tests/MSSQLTests.cs +++ b/QueryDB.Core.Tests/MSSQLTests.cs @@ -39,7 +39,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Name"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Benjamin", agent.ReferenceData["Agent_Name"]); @@ -55,7 +55,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery_UpperCaseKeys() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Benjamin", agent.ReferenceData["AGENT_NAME"]); @@ -71,7 +71,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery_Joins() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004" && X.ReferenceData["Cust_Code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Ivan", agent.ReferenceData["Agent_Name"]); @@ -89,7 +89,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery_Joins_UpperCaseKeys() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]); @@ -107,7 +107,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery_Aliases() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004" && X.ReferenceData["Cust_Code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Ivan", agent.ReferenceData["Agent"]); @@ -123,7 +123,7 @@ public void Test_MSSQL_FetchData_Dictionary_SelectQuery_Aliases_UpperCaseKeys() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT"]); @@ -139,7 +139,7 @@ public void Test_MSSQL_FetchData_Dictionary_DataTypes_Check() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("9223372036854775807", dataType.ReferenceData["BigInt_Column"]); Assert.AreEqual("EjRWeJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", dataType.ReferenceData["Binary_Column"]); @@ -182,7 +182,7 @@ public void Test_MSSQL_FetchData_Entity_SelectQuery() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Name == "Benjamin"); Assert.AreEqual("A009", agent.Agent_Code); Assert.AreEqual("Benjamin", agent.Agent_Name); @@ -198,7 +198,7 @@ public void Test_MSSQL_FetchData_Entity_SelectQuery_Joins() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent_Name); @@ -209,10 +209,10 @@ public void Test_MSSQL_FetchData_Entity_SelectQuery_Joins() Assert.AreEqual((decimal)500.00, agent.Advance_Amount); Assert.AreEqual("SOD", agent.Ord_Description); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent); - Assert.AreEqual(null, agent.Agent_Location); - Assert.AreEqual(null, agent.Customer); - Assert.AreEqual(null, agent.Customer_Location); + Assert.IsNull(agent.Agent); + Assert.IsNull(agent.Agent_Location); + Assert.IsNull(agent.Customer); + Assert.IsNull(agent.Customer_Location); } [TestMethod] @@ -221,7 +221,7 @@ public void Test_MSSQL_FetchData_Entity_SelectQuery_Aliases() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent); @@ -230,12 +230,12 @@ public void Test_MSSQL_FetchData_Entity_SelectQuery_Aliases() Assert.AreEqual("Shilton", agent.Customer); Assert.AreEqual("Torento", agent.Customer_Location); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent_Name); - Assert.AreEqual(null, agent.Cust_Name); + Assert.IsNull(agent.Agent_Name); + Assert.IsNull(agent.Cust_Name); Assert.AreEqual(0, agent.Ord_Num); Assert.AreEqual(0, agent.Ord_Amount); Assert.AreEqual(0, agent.Advance_Amount); - Assert.AreEqual(null, agent.Ord_Description); + Assert.IsNull(agent.Ord_Description); } [TestMethod] @@ -244,7 +244,7 @@ public void Test_MSSQL_FetchData_Entity_DataTypes_Check() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual(9223372036854775807, dataType.BigInt_Column); Assert.AreEqual("EjRWeJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", ConvertByteArrayToBase64(dataType.Binary_Column)); @@ -283,7 +283,7 @@ public void Test_MSSQL_FetchData_Entity_Strict_Check() { var selectSql = Queries.MSSQLQueries.TestDB.SelectSql_Strict; var data = new DBContext(DB.MSSQL, MSSQLConnectionString).FetchData(selectSql, strict: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("A003", dataType.Agent_Code); Assert.AreEqual("Alex", dataType.Agent); @@ -375,7 +375,7 @@ public void Test_MSSQL_ExecuteCommand_DML_Queries() var rows = dbContext.ExecuteCommand(insertSql); Assert.AreEqual(1, rows); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -388,7 +388,7 @@ public void Test_MSSQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(updateSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -401,7 +401,7 @@ public void Test_MSSQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(deleteSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -543,7 +543,7 @@ public void Test_MSSQL_ExecuteTransaction_DML_Multiple_Queries() var result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -560,7 +560,7 @@ public void Test_MSSQL_ExecuteTransaction_DML_Multiple_Queries() result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -584,7 +584,7 @@ public void Test_MSSQL_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Err var result = dbContext.ExecuteTransaction(statements); Assert.IsFalse(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] diff --git a/QueryDB.Core.Tests/MySQLTests.cs b/QueryDB.Core.Tests/MySQLTests.cs index c8812cc..a176ecc 100644 --- a/QueryDB.Core.Tests/MySQLTests.cs +++ b/QueryDB.Core.Tests/MySQLTests.cs @@ -39,7 +39,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Name"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Benjamin", agent.ReferenceData["Agent_Name"]); @@ -55,7 +55,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery_UpperCaseKeys() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Benjamin", agent.ReferenceData["AGENT_NAME"]); @@ -71,7 +71,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery_Joins() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004" && X.ReferenceData["Cust_Code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Ivan", agent.ReferenceData["Agent_Name"]); @@ -89,7 +89,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery_Joins_UpperCaseKeys() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]); @@ -107,7 +107,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery_Aliases() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["Agent_Code"] == "A004" && X.ReferenceData["Cust_Code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("Ivan", agent.ReferenceData["Agent"]); @@ -123,7 +123,7 @@ public void Test_MySQL_FetchData_Dictionary_SelectQuery_Aliases_UpperCaseKeys() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT"]); @@ -139,7 +139,7 @@ public void Test_MySQL_FetchData_Dictionary_DataTypes_Check() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("9223372036854775807", dataType.ReferenceData["BigInt_Column"]); Assert.AreEqual("1", dataType.ReferenceData["Bit_Column"]); @@ -172,7 +172,7 @@ public void Test_MySQL_FetchData_Entity_SelectQuery() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Name == "Benjamin"); Assert.AreEqual("A009", agent.Agent_Code); Assert.AreEqual("Benjamin", agent.Agent_Name); @@ -188,7 +188,7 @@ public void Test_MySQL_FetchData_Entity_SelectQuery_Joins() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent_Name); @@ -199,10 +199,10 @@ public void Test_MySQL_FetchData_Entity_SelectQuery_Joins() Assert.AreEqual((decimal)500.00, agent.Advance_Amount); Assert.AreEqual("SOD", agent.Ord_Description); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent); - Assert.AreEqual(null, agent.Agent_Location); - Assert.AreEqual(null, agent.Customer); - Assert.AreEqual(null, agent.Customer_Location); + Assert.IsNull(agent.Agent); + Assert.IsNull(agent.Agent_Location); + Assert.IsNull(agent.Customer); + Assert.IsNull(agent.Customer_Location); } [TestMethod] @@ -211,7 +211,7 @@ public void Test_MySQL_FetchData_Entity_SelectQuery_Aliases() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent); @@ -220,12 +220,12 @@ public void Test_MySQL_FetchData_Entity_SelectQuery_Aliases() Assert.AreEqual("Shilton", agent.Customer); Assert.AreEqual("Torento", agent.Customer_Location); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent_Name); - Assert.AreEqual(null, agent.Cust_Name); + Assert.IsNull(agent.Agent_Name); + Assert.IsNull(agent.Cust_Name); Assert.AreEqual(0, agent.Ord_Num); Assert.AreEqual(0, agent.Ord_Amount); Assert.AreEqual(0, agent.Advance_Amount); - Assert.AreEqual(null, agent.Ord_Description); + Assert.IsNull(agent.Ord_Description); } [TestMethod] @@ -234,7 +234,7 @@ public void Test_MySQL_FetchData_Entity_DataTypes_Check() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual(9223372036854775807, dataType.BigInt_Column); Assert.AreEqual((ulong?)1, dataType.Bit_Column); @@ -263,7 +263,7 @@ public void Test_MySQL_FetchData_Entity_Strict_Check() { var selectSql = Queries.MySQLQueries.TestDB.SelectSql_Strict; var data = new DBContext(DB.MySQL, MySQLConnectionString).FetchData(selectSql, strict: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("A003", dataType.Agent_Code); Assert.AreEqual("Alex", dataType.Agent); @@ -355,7 +355,7 @@ public void Test_MySQL_ExecuteCommand_DML_Queries() var rows = dbContext.ExecuteCommand(insertSql); Assert.AreEqual(1, rows); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -368,7 +368,7 @@ public void Test_MySQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(updateSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -381,7 +381,7 @@ public void Test_MySQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(deleteSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -515,7 +515,7 @@ public void Test_MySQL_ExecuteTransaction_DML_Multiple_Queries() var result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["Agent_Code"]); Assert.AreEqual("John", agent.ReferenceData["Agent_Name"]); @@ -532,7 +532,7 @@ public void Test_MySQL_ExecuteTransaction_DML_Multiple_Queries() result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -556,7 +556,7 @@ public void Test_MySQL_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Err var result = dbContext.ExecuteTransaction(statements); Assert.IsFalse(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] diff --git a/QueryDB.Core.Tests/OracleTests.cs b/QueryDB.Core.Tests/OracleTests.cs index c8a5e4f..a471859 100644 --- a/QueryDB.Core.Tests/OracleTests.cs +++ b/QueryDB.Core.Tests/OracleTests.cs @@ -39,7 +39,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery() { var selectSql = Queries.OracleQueries.TestDB.SelectSql; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Benjamin", agent.ReferenceData["AGENT_NAME"]); @@ -55,7 +55,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery_UpperCaseKeys() { var selectSql = Queries.OracleQueries.TestDB.SelectSql; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Benjamin", agent.ReferenceData["AGENT_NAME"]); @@ -71,7 +71,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery_Joins() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]); @@ -89,7 +89,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery_Joins_UpperCaseKeys() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]); @@ -107,7 +107,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery_Aliases() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT"]); @@ -123,7 +123,7 @@ public void Test_Oracle_FetchData_Dictionary_SelectQuery_Aliases_UpperCaseKeys() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT"]); @@ -139,7 +139,7 @@ public void Test_Oracle_FetchData_Dictionary_DataTypes_Check() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 2); + Assert.AreEqual(2, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual(GetBase64Content(Environment.CurrentDirectory + "/SeedData/oracle.sql"), dataType.ReferenceData["BFILE_COLUMN"]); Assert.AreEqual("3q2+7w==", dataType.ReferenceData["BLOB_COLUMN"]); @@ -173,14 +173,14 @@ public void Test_Oracle_FetchData_Entity_SelectQuery() { var selectSql = Queries.OracleQueries.TestDB.SelectSql; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Name == "Benjamin"); Assert.AreEqual("A009", agent.Agent_Code); Assert.AreEqual("Benjamin", agent.Agent_Name); Assert.AreEqual("Hampshair", agent.Working_Area); Assert.AreEqual(0.11, agent.Commission); Assert.AreEqual("008-22536178", agent.Phone_No); - Assert.AreEqual(null, agent.Country); + Assert.IsNull(agent.Country); } [TestMethod] @@ -189,7 +189,7 @@ public void Test_Oracle_FetchData_Entity_SelectQuery_Joins() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent_Name); @@ -200,10 +200,10 @@ public void Test_Oracle_FetchData_Entity_SelectQuery_Joins() Assert.AreEqual(500.00, agent.Advance_Amount); Assert.AreEqual("SOD", agent.Ord_Description); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent); - Assert.AreEqual(null, agent.Agent_Location); - Assert.AreEqual(null, agent.Customer); - Assert.AreEqual(null, agent.Customer_Location); + Assert.IsNull(agent.Agent); + Assert.IsNull(agent.Agent_Location); + Assert.IsNull(agent.Customer); + Assert.IsNull(agent.Customer_Location); } [TestMethod] @@ -212,7 +212,7 @@ public void Test_Oracle_FetchData_Entity_SelectQuery_Aliases() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent); @@ -221,12 +221,12 @@ public void Test_Oracle_FetchData_Entity_SelectQuery_Aliases() Assert.AreEqual("Shilton", agent.Customer); Assert.AreEqual("Torento", agent.Customer_Location); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent_Name); - Assert.AreEqual(null, agent.Cust_Name); + Assert.IsNull(agent.Agent_Name); + Assert.IsNull(agent.Cust_Name); Assert.AreEqual(0, agent.Ord_Num); Assert.AreEqual(0, agent.Ord_Amount); Assert.AreEqual(0, agent.Advance_Amount); - Assert.AreEqual(null, agent.Ord_Description); + Assert.IsNull(agent.Ord_Description); } [TestMethod] @@ -235,7 +235,7 @@ public void Test_Oracle_FetchData_Entity_DataTypes_Check() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 2); + Assert.AreEqual(2, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual(GetBase64Content(Environment.CurrentDirectory + "/SeedData/oracle.sql"), ConvertByteArrayToBase64(dataType.BFile_Column)); Assert.AreEqual("3q2+7w==", ConvertByteArrayToBase64(dataType.Blob_Column)); @@ -265,7 +265,7 @@ public void Test_Oracle_FetchData_Entity_Strict_Check() { var selectSql = Queries.OracleQueries.TestDB.SelectSql_Strict; var data = new DBContext(DB.Oracle, OracleConnectionString).FetchData(selectSql, strict: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("A003", dataType.Agent_Code); Assert.AreEqual("Alex", dataType.Agent); @@ -357,7 +357,7 @@ public void Test_Oracle_ExecuteCommand_DML_Queries() var rows = dbContext.ExecuteCommand(insertSql); Assert.AreEqual(1, rows); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("John", agent.ReferenceData["AGENT_NAME"]); @@ -370,7 +370,7 @@ public void Test_Oracle_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(updateSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("John", agent.ReferenceData["AGENT_NAME"]); @@ -383,7 +383,7 @@ public void Test_Oracle_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(deleteSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -526,7 +526,7 @@ public void Test_Oracle_ExecuteTransaction_DML_Multiple_Queries() var result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("John", agent.ReferenceData["AGENT_NAME"]); @@ -543,7 +543,7 @@ public void Test_Oracle_ExecuteTransaction_DML_Multiple_Queries() result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -567,7 +567,7 @@ public void Test_Oracle_ExecuteTransaction_Incomplete_Transaction_Rollback_On_Er var result = dbContext.ExecuteTransaction(statements); Assert.IsFalse(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] diff --git a/QueryDB.Core.Tests/PostgreSQLTests.cs b/QueryDB.Core.Tests/PostgreSQLTests.cs index 67cd8df..ec88bea 100644 --- a/QueryDB.Core.Tests/PostgreSQLTests.cs +++ b/QueryDB.Core.Tests/PostgreSQLTests.cs @@ -39,7 +39,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["agent_name"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["agent_code"]); Assert.AreEqual("Benjamin", agent.ReferenceData["agent_name"]); @@ -55,7 +55,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery_UpperCaseKeys() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_NAME"] == "Benjamin"); Assert.AreEqual("A009", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Benjamin", agent.ReferenceData["AGENT_NAME"]); @@ -71,7 +71,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery_Joins() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["agent_code"] == "A004" && X.ReferenceData["cust_code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["agent_code"]); Assert.AreEqual("Ivan", agent.ReferenceData["agent_name"]); @@ -89,7 +89,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery_Joins_UpperCaseKeys { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT_NAME"]); @@ -107,7 +107,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery_Aliases() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["agent_code"] == "A004" && X.ReferenceData["cust_code"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["agent_code"]); Assert.AreEqual("Ivan", agent.ReferenceData["agent"]); @@ -123,7 +123,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_SelectQuery_Aliases_UpperCaseKe { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql, upperCaseKeys: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.ReferenceData["AGENT_CODE"] == "A004" && X.ReferenceData["CUST_CODE"] == "C00006"); Assert.AreEqual("A004", agent.ReferenceData["AGENT_CODE"]); Assert.AreEqual("Ivan", agent.ReferenceData["AGENT"]); @@ -139,7 +139,7 @@ public void Test_PostgreSQL_FetchData_Dictionary_DataTypes_Check() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("9223372036854775807", dataType.ReferenceData["bigint_column"]); Assert.AreEqual("True", dataType.ReferenceData["boolean_column"]); @@ -169,7 +169,7 @@ public void Test_PostgreSQL_FetchData_Entity_SelectQuery() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 12); + Assert.AreEqual(12, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Name == "Benjamin"); Assert.AreEqual("A009", agent.Agent_Code); Assert.AreEqual("Benjamin", agent.Agent_Name); @@ -185,7 +185,7 @@ public void Test_PostgreSQL_FetchData_Entity_SelectQuery_Joins() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Join; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent_Name); @@ -196,10 +196,10 @@ public void Test_PostgreSQL_FetchData_Entity_SelectQuery_Joins() Assert.AreEqual((decimal)500.00, agent.Advance_Amount); Assert.AreEqual("SOD", agent.Ord_Description); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent); - Assert.AreEqual(null, agent.Agent_Location); - Assert.AreEqual(null, agent.Customer); - Assert.AreEqual(null, agent.Customer_Location); + Assert.IsNull(agent.Agent); + Assert.IsNull(agent.Agent_Location); + Assert.IsNull(agent.Customer); + Assert.IsNull(agent.Customer_Location); } [TestMethod] @@ -208,7 +208,7 @@ public void Test_PostgreSQL_FetchData_Entity_SelectQuery_Aliases() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Alias; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var agent = data.FirstOrDefault(X => X.Agent_Code == "A004" && X.Cust_Code == "C00006"); Assert.AreEqual("A004", agent.Agent_Code); Assert.AreEqual("Ivan", agent.Agent); @@ -217,12 +217,12 @@ public void Test_PostgreSQL_FetchData_Entity_SelectQuery_Aliases() Assert.AreEqual("Shilton", agent.Customer); Assert.AreEqual("Torento", agent.Customer_Location); // Non Existent Query Data - Assert.AreEqual(null, agent.Agent_Name); - Assert.AreEqual(null, agent.Cust_Name); + Assert.IsNull(agent.Agent_Name); + Assert.IsNull(agent.Cust_Name); Assert.AreEqual(0, agent.Ord_Num); Assert.AreEqual(0, agent.Ord_Amount); Assert.AreEqual(0, agent.Advance_Amount); - Assert.AreEqual(null, agent.Ord_Description); + Assert.IsNull(agent.Ord_Description); } [TestMethod] @@ -231,7 +231,7 @@ public void Test_PostgreSQL_FetchData_Entity_DataTypes_Check() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_DataTypes; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual(9223372036854775807, dataType.BigInt_Column); Assert.IsTrue(dataType.Boolean_Column); @@ -257,7 +257,7 @@ public void Test_PostgreSQL_FetchData_Entity_Strict_Check() { var selectSql = Queries.PostgreSQLQueries.TestDB.SelectSql_Strict; var data = new DBContext(DB.PostgreSQL, PostgreSQLConnectionString).FetchData(selectSql, strict: true); - Assert.IsTrue(data.Count == 34); + Assert.AreEqual(34, data.Count); var dataType = data.FirstOrDefault(); Assert.AreEqual("A003", dataType.Agent_Code); Assert.AreEqual("Alex", dataType.Agent); @@ -349,7 +349,7 @@ public void Test_PostgreSQL_ExecuteCommand_DML_Queries() var rows = dbContext.ExecuteCommand(insertSql); Assert.AreEqual(1, rows); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["agent_code"]); Assert.AreEqual("John", agent.ReferenceData["agent_name"]); @@ -362,7 +362,7 @@ public void Test_PostgreSQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(updateSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["agent_code"]); Assert.AreEqual("John", agent.ReferenceData["agent_name"]); @@ -375,7 +375,7 @@ public void Test_PostgreSQL_ExecuteCommand_DML_Queries() rows = dbContext.ExecuteCommand(deleteSql); Assert.AreEqual(1, rows); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -509,7 +509,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DML_Multiple_Queries() var result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 1); + Assert.AreEqual(1, data.Count); var agent = data.FirstOrDefault(); Assert.AreEqual("A020", agent.ReferenceData["agent_code"]); Assert.AreEqual("John", agent.ReferenceData["agent_name"]); @@ -526,7 +526,7 @@ public void Test_PostgreSQL_ExecuteTransaction_DML_Multiple_Queries() result = dbContext.ExecuteTransaction(statements); Assert.IsTrue(result); data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] @@ -550,7 +550,7 @@ public void Test_PostgreSQL_ExecuteTransaction_Incomplete_Transaction_Rollback_O var result = dbContext.ExecuteTransaction(statements); Assert.IsFalse(result); var data = dbContext.FetchData(verifyDMLExecution); - Assert.IsTrue(data.Count == 0); + Assert.AreEqual(0, data.Count); } [TestMethod] diff --git a/QueryDB.Core.Tests/QueryDB.Core.Tests.csproj b/QueryDB.Core.Tests/QueryDB.Core.Tests.csproj index 099c523..c508b11 100644 --- a/QueryDB.Core.Tests/QueryDB.Core.Tests.csproj +++ b/QueryDB.Core.Tests/QueryDB.Core.Tests.csproj @@ -1,20 +1,21 @@  - netcoreapp3.1 + + netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0 false - + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - + + + + @@ -22,17 +23,12 @@ + + Always + Always - - - - - - - - diff --git a/QueryDB.Core.Tests/TestBase.cs b/QueryDB.Core.Tests/TestBase.cs index 0163cb9..972cf2c 100644 --- a/QueryDB.Core.Tests/TestBase.cs +++ b/QueryDB.Core.Tests/TestBase.cs @@ -1,6 +1,5 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.Extensions.Configuration; using System; -using System.Configuration; using System.Globalization; using System.IO; @@ -8,11 +7,11 @@ namespace QueryDB.Core.Tests { public class TestBase { - private readonly string _useDocker = ConfigurationManager.AppSettings["UseDocker"]; - protected readonly string MSSQLConnectionString = ConfigurationManager.AppSettings["MSSQLConnection"]; - protected readonly string MySQLConnectionString = ConfigurationManager.AppSettings["MySQLConnection"]; - protected readonly string OracleConnectionString = ConfigurationManager.AppSettings["OracleConnection"]; - protected readonly string PostgreSQLConnectionString = ConfigurationManager.AppSettings["PostgreSQLConnection"]; + private readonly IConfiguration _configuration; + protected readonly string MSSQLConnectionString; + protected readonly string MySQLConnectionString; + protected readonly string OracleConnectionString; + protected readonly string PostgreSQLConnectionString; protected const string DB_TESTS = "DB-TESTS"; protected const string SMOKE_TESTS = "SMOKE-TESTS"; protected const string MSSQL_TESTS = "MSSQL-TESTS"; @@ -22,16 +21,20 @@ public class TestBase protected const string QUERY_DB_EXCEPTION_TESTS = "QUERY-DB-EXCEPTION-TESTS"; protected const string UNKNOW_DB_TESTS = "UNKNOW-DB-TESTS"; - [AssemblyInitialize] - internal void CheckDockerImages() + public TestBase() { - if (_useDocker.Equals("true")) - { - //TBD - } + _configuration = new ConfigurationBuilder() + .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) + .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + .Build(); + + MSSQLConnectionString = _configuration["TestSettings:MSSQLConnection"]; + MySQLConnectionString = _configuration["TestSettings:MySQLConnection"]; + OracleConnectionString = _configuration["TestSettings:OracleConnection"]; + PostgreSQLConnectionString = _configuration["TestSettings:PostgreSQLConnection"]; } - protected string ConvertToUTCInUSFormat(string dateString) + protected static string ConvertToUTCInUSFormat(string dateString) { DateTimeOffset date; string[] formats = { @@ -58,7 +61,7 @@ protected string ConvertToUTCInUSFormat(string dateString) } } - protected string ConvertToUSFormat(string dateString) + protected static string ConvertToUSFormat(string dateString) { DateTime date; string[] formats = { @@ -91,7 +94,7 @@ protected string ConvertToUSFormat(string dateString) } } - protected string GetBase64Content(string filePath) + protected static string GetBase64Content(string filePath) { if (!File.Exists(filePath)) throw new FileNotFoundException("File not found - '" + filePath + "'."); diff --git a/QueryDB.Core.Tests/appsettings.json b/QueryDB.Core.Tests/appsettings.json new file mode 100644 index 0000000..2128e8e --- /dev/null +++ b/QueryDB.Core.Tests/appsettings.json @@ -0,0 +1,8 @@ +{ + "TestSettings": { + "MSSQLConnection": "Data Source=(local);Initial Catalog=master;User Id=SA;Password=__DB_PASSWORD__;Encrypt=False;", + "MySQLConnection": "server=localhost;database=mysql;uid=root;pwd=__DB_PASSWORD__", + "OracleConnection": "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = XE))); User Id = sys;Password=__DB_PASSWORD__;DBA Privilege=SYSDBA", + "PostgreSQLConnection": "Host=localhost;Port=5432;Database=postgres;Username=sys;Password=__DB_PASSWORD__;" + } +} \ No newline at end of file diff --git a/QueryDB/QueryDB.csproj b/QueryDB/QueryDB.csproj index a75961e..868421b 100644 --- a/QueryDB/QueryDB.csproj +++ b/QueryDB/QueryDB.csproj @@ -2,13 +2,37 @@ netstandard2.0 + Abhinav Minhas + QueryDB is a flexible database query framework designed to simplify querying and executing transactions across multiple database systems. + +Supported Databases: +- MSSQL +- MySQL +- Oracle +- PostgreSQL + https://github.com/abhinavminhas/QueryDB.NET + https://github.com/abhinavminhas/QueryDB.NET + git + LICENSE + sql, query, rdbms, database, mssql, sqlserver, mysql, oracle, postgresql + QueryDB framework for simplified querying and executing transactions across multiple database systems. +- Retrieve data from database. +- Execute database commands. +- Execute transactions while maintaining atomicity. - - - - + + + + + + + + + True + + diff --git a/README.md b/README.md index 687e1af..02bc069 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,17 @@ # QueryDB *QueryDB solution in .NET*.

-[![Build / Test](https://github.com/abhinavminhas/QueryDB/actions/workflows/build.yml/badge.svg)](https://github.com/abhinavminhas/QueryDB/actions/workflows/build.yml) -[![codecov](https://codecov.io/gh/abhinavminhas/QueryDB/graph/badge.svg?token=L21DM7HZ46)](https://codecov.io/gh/abhinavminhas/QueryDB) +[![Build / Test](https://github.com/abhinavminhas/QueryDB.NET/actions/workflows/build.yml/badge.svg)](https://github.com/abhinavminhas/QueryDB.NET/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/abhinavminhas/QueryDB.NET/graph/badge.svg?token=L21DM7HZ46)](https://codecov.io/gh/abhinavminhas/QueryDB.NET) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=abhinavminhas_QueryDB&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=abhinavminhas_QueryDB) ![maintainer](https://img.shields.io/badge/Creator/Maintainer-abhinavminhas-e65c00) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) +[![NuGet](https://img.shields.io/nuget/v/QueryDB?color=%23004880&label=Nuget)](https://www.nuget.org/packages/QueryDB/) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=abhinavminhas_QueryDB&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=abhinavminhas_QueryDB) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=abhinavminhas_QueryDB&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=abhinavminhas_QueryDB) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=abhinavminhas_QueryDB&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=abhinavminhas_QueryDB) -QueryDB framework project is a flexible database query tool designed to facilitate and simplify querying multiple database systems. +QueryDB is a flexible database query framework designed to simplify querying and executing transactions across multiple database systems. ## Supported Databases - [MSSQL](https://www.microsoft.com/en-us/sql-server)