41 lines
1.6 KiB
C#
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));
|
|
}
|
|
}
|