using Strata.SqlTools.SqlBreakdown.Interfaces;
using System.Text;
namespace Strata.SqlTools.SqlBreakdown.Tests.SqlBreakdownCollectionTests;
///
/// Base class for SqlBreakdownCollection tests containing shared test utilities and mock implementations.
///
public class SqlBreakdownCollectionTestBase
{
///
/// Mock implementation of ISqlBreakdown for testing purposes.
///
public class MockSqlBreakdown : ISqlBreakdown
{
private readonly string _sql;
public MockSqlBreakdown(string sql)
{
_sql = sql;
SetupClauses = new List();
FinishClauses = new System.Collections.ArrayList();
}
public string? RawSql { get; set; }
public List SetupClauses { get; set; }
public bool IsUsingSetupClause => SetupClauses.Count > 0;
public System.Collections.ArrayList FinishClauses { get; set; }
public bool IsUsingFinishClause => FinishClauses.Count > 0;
public string GetSql(bool includeSetupFinish = true)
{
var sb = new StringBuilder();
if (includeSetupFinish)
{
foreach (string setup in SetupClauses)
{
sb.AppendLine(setup);
}
}
sb.Append(_sql);
if (includeSetupFinish)
{
foreach (string finish in FinishClauses)
{
sb.AppendLine(finish);
}
}
return sb.ToString();
}
public override string ToString() => GetSql();
public object Clone()
{
var clone = (MockSqlBreakdown)MemberwiseClone();
clone.SetupClauses = new List(SetupClauses);
clone.FinishClauses = new System.Collections.ArrayList(FinishClauses);
return clone;
}
}
}