From 813f7ada2dcd8d46029b8a9c62f873aee77f6b30 Mon Sep 17 00:00:00 2001 From: jED Date: Thu, 21 Nov 2024 11:58:27 +0100 Subject: [PATCH] Fixed INSERT test with hyerachical CTE. --- .../CSQLQueryExpress.Tests.csproj | 3 ++ .../TestInsertFromHyerarchicalSelectCte.txt | 29 +++++++++++++++++++ .../UnitTests/QueryInsertUnitTest.cs | 13 +++++++-- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 Tests/CSQLQueryExpress.Tests/UnitTests/InsertStatements/TestInsertFromHyerarchicalSelectCte.txt diff --git a/Tests/CSQLQueryExpress.Tests/CSQLQueryExpress.Tests.csproj b/Tests/CSQLQueryExpress.Tests/CSQLQueryExpress.Tests.csproj index 18861e9..179fa13 100644 --- a/Tests/CSQLQueryExpress.Tests/CSQLQueryExpress.Tests.csproj +++ b/Tests/CSQLQueryExpress.Tests/CSQLQueryExpress.Tests.csproj @@ -57,6 +57,9 @@ Always + + Always + Always diff --git a/Tests/CSQLQueryExpress.Tests/UnitTests/InsertStatements/TestInsertFromHyerarchicalSelectCte.txt b/Tests/CSQLQueryExpress.Tests/UnitTests/InsertStatements/TestInsertFromHyerarchicalSelectCte.txt new file mode 100644 index 0000000..c45bea5 --- /dev/null +++ b/Tests/CSQLQueryExpress.Tests/UnitTests/InsertStatements/TestInsertFromHyerarchicalSelectCte.txt @@ -0,0 +1,29 @@ +WITH _t0 AS +( +SELECT +_t0.[CompanyName], +@p0 AS [Phone] +FROM [dbo].[Customers] AS _t0 +), +_t1 AS +( +SELECT +_t1.* +FROM [dbo].[Suppliers] AS _t1 +INNER JOIN _t0 ON (_t1.[CompanyName] = _t0.[CompanyName]) +), +_t2 AS +( +SELECT +_t2.* +FROM [dbo].[Shippers] AS _t2 +INNER JOIN _t0 ON (_t2.[CompanyName] = _t0.[CompanyName]) +) + +INSERT INTO [dbo].[Shippers] +([CompanyName], [Phone]) +SELECT +_t2.* + FROM _t0 + INNER JOIN _t1 ON (_t0.[CompanyName] = _t1.[CompanyName]) + INNER JOIN _t2 ON (_t2.[CompanyName] = _t1.[CompanyName]) \ No newline at end of file diff --git a/Tests/CSQLQueryExpress.Tests/UnitTests/QueryInsertUnitTest.cs b/Tests/CSQLQueryExpress.Tests/UnitTests/QueryInsertUnitTest.cs index 02ab95c..d7aeff6 100644 --- a/Tests/CSQLQueryExpress.Tests/UnitTests/QueryInsertUnitTest.cs +++ b/Tests/CSQLQueryExpress.Tests/UnitTests/QueryInsertUnitTest.cs @@ -1,6 +1,7 @@ using NUnit.Framework.Internal; using QueryExecution.Dal.NorthwindPubs; using System.Numerics; +using System.Runtime.CompilerServices; namespace CSQLQueryExpress.Tests.UnitTests { @@ -146,8 +147,9 @@ public void TestInsertFromHyerarchicalSelectCte() Assert.That(compiledQuery.Parameters.Count, Is.EqualTo(1)); Assert.That(compiledQuery.Parameters[0].Value, Is.EqualTo("Ciao")); - Assert.That(compiledQuery.Statement.Replace(Environment.NewLine, string.Empty), - Is.EqualTo(@"WITH _t0 AS (SELECT _t0.[CompanyName], @p0 AS [Phone] FROM [dbo].[Customers] AS _t0) INSERT INTO [dbo].[Shippers] ([CompanyName], [Phone]) SELECT _t0.[CompanyName], _t0.[Phone] FROM _t1")); + var statement = GetSQLStatement(); + + Assert.That(compiledQuery.Statement, Is.EqualTo(statement)); } [Test] @@ -172,5 +174,12 @@ public void TestInsertParameters() Assert.That(compiledQuery.Statement.Replace(Environment.NewLine, string.Empty), Is.EqualTo(@"INSERT INTO [dbo].[Region] ([RegionID], [RegionDescription]) VALUES (((SELECT MAX(_t0.[RegionID]) FROM [dbo].[Region] AS _t0) + @p0), @p1)")); } + + private string GetSQLStatement([CallerMemberName] string memeberName = null) + { + var statement = File.ReadAllText($@"UnitTests\InsertStatements\{memeberName}.txt"); + + return statement; + } } }