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;
+ }
}
}