Skip to content

Commit

Permalink
Fixed INSERT test with hyerachical CTE.
Browse files Browse the repository at this point in the history
  • Loading branch information
glecchi committed Nov 21, 2024
1 parent bc87877 commit 813f7ad
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 2 deletions.
3 changes: 3 additions & 0 deletions Tests/CSQLQueryExpress.Tests/CSQLQueryExpress.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@
<None Update="UnitTests\DatePartStatements\TestDatePartWithDateNullable.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="UnitTests\InsertStatements\TestInsertFromHyerarchicalSelectCte.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Update="UnitTests\MultipleResultSetsStatements\TestMultipleResultSets.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Expand Down
Original file line number Diff line number Diff line change
@@ -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])
13 changes: 11 additions & 2 deletions Tests/CSQLQueryExpress.Tests/UnitTests/QueryInsertUnitTest.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using NUnit.Framework.Internal;
using QueryExecution.Dal.NorthwindPubs;
using System.Numerics;
using System.Runtime.CompilerServices;

namespace CSQLQueryExpress.Tests.UnitTests
{
Expand Down Expand Up @@ -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]
Expand All @@ -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;
}
}
}

0 comments on commit 813f7ad

Please sign in to comment.