Files
sql-utilities/tests/Strata.SqlTools.Tests/ExpressionTests/SelectClauseColumnTests.cs
T

41 lines
1.6 KiB
C#

using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Expressions;
using Strata.SqlTools.SqlBreakdown.Expressions.Functions.Aggregate;
namespace Strata.SqlTools.SqlBreakdown.Tests.ExpressionTests;
[TestFixture]
public class SelectClauseColumnTests : ExpressionTestsBase
{
private static IEnumerable<TestCaseData> SelectClauseColumnTestCases()
{
yield return new TestCaseData("TableColumn", "foo_dept_name", "PES.DEPARTMENT_NAME AS foo_dept_name")
.SetName("TableColumn_{m}");
yield return new TestCaseData("SumFunction", "sum_net_rev", "SUM(PES.NET_REVENUE) AS sum_net_rev")
.SetName("WithSumFunction_{m}");
yield return new TestCaseData("Parameter", "my_var_col", ":FOOBAR AS my_var_col")
.SetName("WithParameter_{m}");
}
[TestCaseSource(nameof(SelectClauseColumnTestCases))]
public void SelectClauseColumn_GeneratesCorrectSql(string columnType, string alias, string expectedSql)
{
// Arrange
SelectClauseColumn column = columnType switch
{
"TableColumn" => SelectClauseColumn.TableColumn(_nameColumnExp, alias),
"SumFunction" => new SelectClauseColumn(new SumFunction(_revenueColumnExp), alias),
"Parameter" => new SelectClauseColumn(new ParameterExpression("FOOBAR"), alias),
_ => throw new ArgumentException($"Unknown column type: {columnType}")
};
// Act
var result = column.Accept(_sqlVisitor);
// Assert
Assert.That(result, Is.EqualTo(expectedSql));
}
}