Template
56 lines
2.4 KiB
C#
56 lines
2.4 KiB
C#
using Snowflake.Data.Client;
|
|
using Strata.DecisionSupport.Biz.Parameters;
|
|
using Strata.DecisionSupport.Biz.Test.Unit;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
|
|
namespace Strata.DecisionSupport.Biz.Test.Integration.IntegrationTests
|
|
{
|
|
[ExcludeFromCodeCoverage]
|
|
[TestFixture, Category("Integration"), Category("DSS")]
|
|
public class TestSnowflakeQueries : IntegrationTestBase
|
|
{
|
|
[TestCaseSource(typeof(SnowflakeTestCases), nameof(SnowflakeTestCases.TestCases))]
|
|
public async Task VerifyQuery<TI, T>(TI obj, T queryInfo, Func<IEnumerable<TI>, IEnumerable<TI>> orderby) where TI : class where T : class
|
|
{
|
|
var query = Query(queryInfo);
|
|
var lineReader = query.LineReader();
|
|
await Verifier.Verify(lineReader, verifySettings)
|
|
.UseDirectory("snapshotQueries")
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
var parameters = queryInfo is IWithParameters hasParameters ? hasParameters.Parameters() : null;
|
|
if (string.IsNullOrEmpty(query)) { return; }
|
|
try
|
|
{
|
|
IEnumerable<TI> result;
|
|
result = parameters != null
|
|
? await _databaseContext.QueryAsync<TI>(query, typeof(T).Name, parameters)
|
|
: await _databaseContext.QueryAsync<TI>(query, typeof(T).Name);
|
|
if (orderby != null)
|
|
{
|
|
result = orderby(result);
|
|
}
|
|
await Verify(result, verifySettings)
|
|
.UseDirectory("snapshotResults")
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
catch (SnowflakeDbException dbex)
|
|
{
|
|
var result = dbex.Message + Environment.NewLine + "".PadLeft(40, '-') + Environment.NewLine + lineReader;
|
|
await Verifier.Verify(query, verifySettings)
|
|
.UseDirectory("errorQueries")
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
await Verifier.Verify(result, verifyErrorSettings)
|
|
.UseFileName(TestContext.CurrentContext.TestName());
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
}
|
|
|
|
protected override string Query<T>(T queryInfo) where T : class
|
|
=> SnowflakeTestCases.Query(queryInfo);
|
|
|
|
}
|
|
} |