chore(sonar): wrap independent assertions in Assert.Multiple (NUnit2045)
Driven by `dotnet format analyzers --diagnostics NUnit2045`. The fixer
groups consecutive independent `Assert.That(...)` calls into
`Assert.Multiple(() => { ... })`, so a failing assertion no longer
short-circuits the block — every failure inside the group is reported,
which gives much better diagnostics on multi-property tests.
Audit confirmed no Assert.Throws / Assert.Fail / Assert.Catch / Assert.Pass
/ Assert.DoesNotThrow got pulled inside a Multiple block (those need to
short-circuit). All 1180 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
505ada5017
commit
67512d23e1
@@ -23,9 +23,12 @@ public class LinqQueryBreakdownBuilderTests
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(breakdown.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("Age > 18"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(breakdown.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("Age > 18"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -375,13 +378,16 @@ public class LinqQueryBreakdownBuilderTests
|
||||
.OrderByDescending("AvgSalary")
|
||||
.Build();
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Department"));
|
||||
Assert.That(breakdown.FromClause.Clause, Is.EqualTo("Employees"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
Assert.That(breakdown.GroupByClause.Clause, Is.EqualTo("Department, Position"));
|
||||
Assert.That(breakdown.HavingClause.Clause, Is.EqualTo("COUNT(*) >= 3"));
|
||||
Assert.That(breakdown.OrderByClause.Clause, Is.EqualTo("AvgSalary DESC"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Department"));
|
||||
Assert.That(breakdown.FromClause.Clause, Is.EqualTo("Employees"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
Assert.That(breakdown.GroupByClause.Clause, Is.EqualTo("Department, Position"));
|
||||
Assert.That(breakdown.HavingClause.Clause, Is.EqualTo("COUNT(*) >= 3"));
|
||||
Assert.That(breakdown.OrderByClause.Clause, Is.EqualTo("AvgSalary DESC"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -396,10 +402,13 @@ public class LinqQueryBreakdownBuilderTests
|
||||
.OrderByAscending("Id")
|
||||
.Build();
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
Assert.That(breakdown.OrderByClause.Clause, Is.EqualTo("Id ASC"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(breakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(breakdown.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
Assert.That(breakdown.OrderByClause.Clause, Is.EqualTo("Id ASC"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -503,9 +512,12 @@ public class LinqQueryBreakdownBuilderTests
|
||||
.FromTable("Orders");
|
||||
var breakdown2 = builder2.Build();
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown1.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(breakdown2.FromClause.Clause, Is.EqualTo("Orders"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(breakdown1.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(breakdown2.FromClause.Clause, Is.EqualTo("Orders"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -27,8 +27,11 @@ public class LinqQueryBreakdownTests
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(breakdown.EntityType, Is.EqualTo(typeof(User)));
|
||||
Assert.That(breakdown.FromClause?.Clause, Does.Contain("User"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.EntityType, Is.EqualTo(typeof(User)));
|
||||
Assert.That(breakdown.FromClause?.Clause, Does.Contain("User"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -92,10 +95,13 @@ public class LinqQueryBreakdownTests
|
||||
// Act
|
||||
var breakdown = LinqQueryBreakdown.Analyze(query);
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown.WhereClause?.Clause, Is.Not.Null);
|
||||
Assert.That(breakdown.OrderByClause?.Clause, Is.Not.Null);
|
||||
Assert.That(breakdown.SelectClause?.Clause, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(breakdown.WhereClause?.Clause, Is.Not.Null);
|
||||
Assert.That(breakdown.OrderByClause?.Clause, Is.Not.Null);
|
||||
Assert.That(breakdown.SelectClause?.Clause, Is.Not.Null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -159,10 +165,13 @@ public class LinqQueryBreakdownTests
|
||||
// Act
|
||||
var success = LinqQueryBreakdown.TryAnalyze(query, out var breakdown, out var error);
|
||||
|
||||
// Assert
|
||||
Assert.That(success, Is.True);
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(error, Is.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(success, Is.True);
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(error, Is.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -174,9 +183,12 @@ public class LinqQueryBreakdownTests
|
||||
// Act
|
||||
var success = LinqQueryBreakdown.TryAnalyze(query!, out var breakdown, out var error);
|
||||
|
||||
// Assert
|
||||
Assert.That(success, Is.False);
|
||||
Assert.That(error, Is.Not.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(success, Is.False);
|
||||
Assert.That(error, Is.Not.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -194,10 +206,16 @@ public class LinqQueryBreakdownTests
|
||||
// Assert
|
||||
Assert.That(breakdown.SelectClause?.Clause, Does.Contain("Id"));
|
||||
Assert.That(breakdown.SelectClause?.Clause, Does.Contain("Name"));
|
||||
Assert.That(breakdown.SelectClause?.Clause, Does.Contain("Email"));
|
||||
Assert.That(breakdown.WhereClause?.Clause, Does.Contain("Age"));
|
||||
Assert.That(breakdown.WhereClause?.Clause, Does.Contain("IsActive"));
|
||||
Assert.That(breakdown.OrderByClause?.Clause, Does.Contain("Name"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.SelectClause?.Clause, Does.Contain("Email"));
|
||||
Assert.That(breakdown.WhereClause?.Clause, Does.Contain("Age"));
|
||||
});
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.WhereClause?.Clause, Does.Contain("IsActive"));
|
||||
Assert.That(breakdown.OrderByClause?.Clause, Does.Contain("Name"));
|
||||
});
|
||||
}
|
||||
|
||||
#region Round-Trip and Query Modification Tests
|
||||
@@ -278,9 +296,12 @@ public class LinqQueryBreakdownTests
|
||||
var activeSql = activeBreakdown.GetSql();
|
||||
var recentSql = recentBreakdown.GetSql();
|
||||
|
||||
// Assert - Both queries are valid and different
|
||||
Assert.That(activeSql, Does.Contain("IsActive"));
|
||||
Assert.That(recentSql, Does.Contain("Age"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert - Both queries are valid and different
|
||||
Assert.That(activeSql, Does.Contain("IsActive"));
|
||||
Assert.That(recentSql, Does.Contain("Age"));
|
||||
});
|
||||
Assert.That(activeSql, Is.Not.EqualTo(recentSql));
|
||||
}
|
||||
|
||||
@@ -328,8 +349,11 @@ public class LinqQueryBreakdownTests
|
||||
|
||||
// Assert
|
||||
Assert.That(paginatedSql, Does.Contain("ORDER BY"));
|
||||
Assert.That(paginatedSql, Does.Contain("Id ASC"));
|
||||
Assert.That(breakdown.SetupClauses, Has.Count.EqualTo(1));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(paginatedSql, Does.Contain("Id ASC"));
|
||||
Assert.That(breakdown.SetupClauses, Has.Count.EqualTo(1));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -351,12 +375,15 @@ public class LinqQueryBreakdownTests
|
||||
var hasOrdering = !string.IsNullOrEmpty(breakdown.OrderByClause?.Clause);
|
||||
var summary = breakdown.GetQuerySummary();
|
||||
|
||||
// Assert - Verify analytics
|
||||
Assert.That(methodCount, Is.GreaterThan(0));
|
||||
Assert.That(hasProjection, Is.True);
|
||||
Assert.That(hasFilters, Is.True);
|
||||
Assert.That(hasOrdering, Is.True);
|
||||
Assert.That(summary, Does.Contain("SELECT"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert - Verify analytics
|
||||
Assert.That(methodCount, Is.GreaterThan(0));
|
||||
Assert.That(hasProjection, Is.True);
|
||||
Assert.That(hasFilters, Is.True);
|
||||
Assert.That(hasOrdering, Is.True);
|
||||
Assert.That(summary, Does.Contain("SELECT"));
|
||||
});
|
||||
Assert.That(summary, Does.Contain("WHERE"));
|
||||
Assert.That(summary, Does.Contain("ORDER BY"));
|
||||
}
|
||||
@@ -523,9 +550,12 @@ public class GetQueryTests
|
||||
var linqResult = linqBreakdown.GetQuery<User>();
|
||||
var sqlResult = sqlBreakdown.GetQuery<User>();
|
||||
|
||||
// Assert
|
||||
Assert.That(linqResult, Is.Null);
|
||||
Assert.That(sqlResult, Is.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(linqResult, Is.Null);
|
||||
Assert.That(sqlResult, Is.Null);
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -543,9 +573,12 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(breakdown.TableName.Clause, Is.EqualTo("User"));
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Is.Not.Empty);
|
||||
Assert.That(breakdown.ValuesClause.Clause, Is.Not.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.TableName.Clause, Is.EqualTo("User"));
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Is.Not.Empty);
|
||||
Assert.That(breakdown.ValuesClause.Clause, Is.Not.Empty);
|
||||
});
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Does.Contain("Id"));
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Does.Contain("Name"));
|
||||
}
|
||||
@@ -565,9 +598,12 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(breakdown.TableName.Clause, Is.EqualTo("User"));
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Is.Not.Empty);
|
||||
Assert.That(breakdown.ValuesClause.Clause, Does.Contain("("));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.TableName.Clause, Is.EqualTo("User"));
|
||||
Assert.That(breakdown.InsertIntoClause.Clause, Is.Not.Empty);
|
||||
Assert.That(breakdown.ValuesClause.Clause, Does.Contain("("));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -690,8 +726,11 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(breakdown, Is.Not.Null);
|
||||
Assert.That(breakdown.ProcedureName.Clause, Is.EqualTo(procName));
|
||||
Assert.That(breakdown.Parameters, Is.Not.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(breakdown.ProcedureName.Clause, Is.EqualTo(procName));
|
||||
Assert.That(breakdown.Parameters, Is.Not.Empty);
|
||||
});
|
||||
Assert.That(breakdown.Parameters, Has.Count.EqualTo(2));
|
||||
}
|
||||
|
||||
@@ -763,10 +802,13 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(sqlServerBreakdown, Is.Not.Null);
|
||||
Assert.That(sqlServerBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(sqlServerBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(sqlServerBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -784,10 +826,13 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(postgresBreakdown, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(postgresBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(postgresBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(postgresBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(postgresBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(postgresBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(postgresBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(postgresBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -802,10 +847,13 @@ public class GetQueryTests
|
||||
|
||||
// Assert
|
||||
Assert.That(snowflakeBreakdown, Is.Not.Null);
|
||||
Assert.That(snowflakeBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(snowflakeBreakdown.SelectClause?.Clause, Is.EqualTo(breakdown.SelectClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.WhereClause?.Clause, Is.EqualTo(breakdown.WhereClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -819,9 +867,12 @@ public class GetQueryTests
|
||||
// Act
|
||||
var sqlServerBreakdown = breakdown.ConvertToSqlServerBreakdown();
|
||||
|
||||
// Assert
|
||||
Assert.That(sqlServerBreakdown.SelectClause?.Comment, Is.EqualTo("Select user columns"));
|
||||
Assert.That(sqlServerBreakdown.WhereClause?.Comment, Is.EqualTo("Filter adult users"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(sqlServerBreakdown.SelectClause?.Comment, Is.EqualTo("Select user columns"));
|
||||
Assert.That(sqlServerBreakdown.WhereClause?.Comment, Is.EqualTo("Filter adult users"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -837,12 +888,15 @@ public class GetQueryTests
|
||||
// Act
|
||||
var postgresBreakdown = breakdown.ConvertToPostgreSqlBreakdown();
|
||||
|
||||
// Assert
|
||||
Assert.That(postgresBreakdown.SelectClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.FromClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.WhereClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.GroupByClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.OrderByClause?.Clause, Is.Not.Null);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(postgresBreakdown.SelectClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.FromClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.WhereClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.GroupByClause?.Clause, Is.Not.Null);
|
||||
Assert.That(postgresBreakdown.OrderByClause?.Clause, Is.Not.Null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -854,9 +908,12 @@ public class GetQueryTests
|
||||
// Act
|
||||
var snowflakeBreakdown = breakdown.ConvertToSnowflakeBreakdown();
|
||||
|
||||
// Assert
|
||||
Assert.That(snowflakeBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(snowflakeBreakdown.FromClause?.Clause, Is.EqualTo(breakdown.FromClause?.Clause));
|
||||
Assert.That(snowflakeBreakdown.OrderByClause?.Clause, Is.EqualTo(breakdown.OrderByClause?.Clause));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -21,8 +21,11 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
|
||||
// Assert
|
||||
Assert.That(mainQuery.WithClauses, Has.Count.EqualTo(1));
|
||||
Assert.That(mainQuery.WithClauses[0].TableName, Is.EqualTo("active_users"));
|
||||
Assert.That(mainQuery.WithClauses[0].Query, Is.EqualTo(cte));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(mainQuery.WithClauses[0].TableName, Is.EqualTo("active_users"));
|
||||
Assert.That(mainQuery.WithClauses[0].Query, Is.EqualTo(cte));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -81,8 +84,11 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
|
||||
// Assert
|
||||
var keys = merged.Keys.ToList();
|
||||
Assert.That(keys.Any(k => k.Contains("Status")), "Should include CTE parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("Limit")), "Should include main query parameters");
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(keys.Any(k => k.Contains("Status")), "Should include CTE parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("Limit")), "Should include main query parameters");
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -101,8 +107,11 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
|
||||
// Assert
|
||||
var valueKey = merged.Keys.FirstOrDefault(k => k.Contains("Value"));
|
||||
Assert.That(valueKey, Is.Not.Null, "Should have a Value parameter");
|
||||
Assert.That(merged[valueKey], Is.EqualTo("main_value"), "Main query parameter should take precedence");
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(valueKey, Is.Not.Null, "Should have a Value parameter");
|
||||
Assert.That(merged[valueKey], Is.EqualTo("main_value"), "Main query parameter should take precedence");
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -152,8 +161,11 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
// Assert
|
||||
Assert.That(query.WithClauses, Has.Count.EqualTo(2));
|
||||
var keys = merged.Keys.ToList();
|
||||
Assert.That(keys.Any(k => k.Contains("MinDate")));
|
||||
Assert.That(keys.Any(k => k.Contains("Status")));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(keys.Any(k => k.Contains("MinDate")));
|
||||
Assert.That(keys.Any(k => k.Contains("Status")));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -213,9 +225,12 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
|
||||
// Assert
|
||||
var keys = merged.Keys.ToList();
|
||||
Assert.That(keys.Any(k => k.Contains("AnchorLevel")), "Should include anchor parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("MaxLevel")), "Should include recursive parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("QueryLimit")), "Should include main query parameters");
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(keys.Any(k => k.Contains("AnchorLevel")), "Should include anchor parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("MaxLevel")), "Should include recursive parameters");
|
||||
Assert.That(keys.Any(k => k.Contains("QueryLimit")), "Should include main query parameters");
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -279,10 +294,13 @@ public class LinqQueryBreakdownWithClauseTests
|
||||
|
||||
// Assert
|
||||
var keys = merged.Keys.ToList();
|
||||
Assert.That(keys.Any(k => k.Contains("InnerParam")));
|
||||
Assert.That(keys.Any(k => k.Contains("OuterParam")));
|
||||
Assert.That(keys.Any(k => k.Contains("MainParam")));
|
||||
Assert.That(sql, Contains.Substring("WITH"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(keys.Any(k => k.Contains("InnerParam")));
|
||||
Assert.That(keys.Any(k => k.Contains("OuterParam")));
|
||||
Assert.That(keys.Any(k => k.Contains("MainParam")));
|
||||
Assert.That(sql, Contains.Substring("WITH"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -19,10 +19,13 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(0));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(0));
|
||||
Assert.That(stats.DuplicateQueries, Is.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(0));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(0));
|
||||
Assert.That(stats.DuplicateQueries, Is.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -43,10 +46,13 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.DuplicateQueries, Is.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.DuplicateQueries, Is.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -77,10 +83,13 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(3));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.DuplicateQueries, Has.Count.EqualTo(2));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(3));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
Assert.That(stats.DuplicateQueries, Has.Count.EqualTo(2));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -207,9 +216,12 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.TableUsageFrequency["Users"], Is.EqualTo(3));
|
||||
Assert.That(stats.TableUsageFrequency["Orders"], Is.EqualTo(1));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.TableUsageFrequency["Users"], Is.EqualTo(3));
|
||||
Assert.That(stats.TableUsageFrequency["Orders"], Is.EqualTo(1));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -246,11 +258,14 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.ColumnSelectionFrequency.ContainsKey("Id"), Is.True);
|
||||
Assert.That(stats.ColumnSelectionFrequency["Id"], Is.EqualTo(3));
|
||||
Assert.That(stats.ColumnSelectionFrequency["Name"], Is.EqualTo(2));
|
||||
Assert.That(stats.ColumnSelectionFrequency["Email"], Is.EqualTo(1));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.ColumnSelectionFrequency.ContainsKey("Id"), Is.True);
|
||||
Assert.That(stats.ColumnSelectionFrequency["Id"], Is.EqualTo(3));
|
||||
Assert.That(stats.ColumnSelectionFrequency["Name"], Is.EqualTo(2));
|
||||
Assert.That(stats.ColumnSelectionFrequency["Email"], Is.EqualTo(1));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -267,9 +282,12 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.ColumnSelectionFrequency.ContainsKey("*"), Is.False);
|
||||
Assert.That(stats.ColumnSelectionFrequency["Id"], Is.EqualTo(1));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.ColumnSelectionFrequency.ContainsKey("*"), Is.False);
|
||||
Assert.That(stats.ColumnSelectionFrequency["Id"], Is.EqualTo(1));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -488,9 +506,12 @@ public class QueryCollectionAnalyzerTests
|
||||
// Act
|
||||
var stats = analyzer.Analyze();
|
||||
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(100));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(stats.TotalQueries, Is.EqualTo(100));
|
||||
Assert.That(stats.UniqueQueries, Is.EqualTo(1));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -62,9 +62,12 @@ public class QueryValidatorTests
|
||||
validator.Validate(breakdown2);
|
||||
var count2 = validator.Issues.Count;
|
||||
|
||||
// Assert
|
||||
Assert.That(count1, Is.GreaterThan(0));
|
||||
Assert.That(count2, Is.GreaterThan(0));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(count1, Is.GreaterThan(0));
|
||||
Assert.That(count2, Is.GreaterThan(0));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -324,10 +327,13 @@ public class QueryValidatorTests
|
||||
var infos = validator.GetIssuesBySeverity(ValidationSeverity.Info);
|
||||
var errors = validator.GetIssuesBySeverity(ValidationSeverity.Error);
|
||||
|
||||
// Assert
|
||||
Assert.That(warnings, Is.Not.Empty);
|
||||
Assert.That(infos, Is.Not.Empty);
|
||||
Assert.That(errors, Is.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(warnings, Is.Not.Empty);
|
||||
Assert.That(infos, Is.Not.Empty);
|
||||
Assert.That(errors, Is.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -349,8 +355,11 @@ public class QueryValidatorTests
|
||||
|
||||
// Assert
|
||||
Assert.That(validator.Issues, Has.Count.EqualTo(1));
|
||||
Assert.That(validator.Issues[0].Code, Is.EqualTo("CUSTOM_001"));
|
||||
Assert.That(validator.HasErrors, Is.True);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(validator.Issues[0].Code, Is.EqualTo("CUSTOM_001"));
|
||||
Assert.That(validator.HasErrors, Is.True);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -365,9 +374,12 @@ public class QueryValidatorTests
|
||||
.AddIssue(ValidationSeverity.Warning, "WARN_001", "Warning 1")
|
||||
.AddIssue(ValidationSeverity.Info, "INFO_001", "Info 1");
|
||||
|
||||
// Assert
|
||||
Assert.That(result, Is.SameAs(validator));
|
||||
Assert.That(validator.Issues, Has.Count.EqualTo(3));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(result, Is.SameAs(validator));
|
||||
Assert.That(validator.Issues, Has.Count.EqualTo(3));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -480,9 +492,12 @@ public class QueryValidatorTests
|
||||
// Act
|
||||
var validator = QueryValidator.ValidateQuery(breakdown);
|
||||
|
||||
// Assert
|
||||
Assert.That(validator.Issues.Count, Is.GreaterThan(1));
|
||||
Assert.That(validator.HasWarnings, Is.True);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(validator.Issues.Count, Is.GreaterThan(1));
|
||||
Assert.That(validator.HasWarnings, Is.True);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
||||
@@ -27,10 +27,13 @@ public class ReverseConverterTests
|
||||
|
||||
// Assert
|
||||
Assert.That(linqBreakdown, Is.Not.Null);
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("IsActive = 1"));
|
||||
Assert.That(linqBreakdown.OrderByClause.Clause, Is.EqualTo("Name ASC"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("IsActive = 1"));
|
||||
Assert.That(linqBreakdown.OrderByClause.Clause, Is.EqualTo("Name ASC"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -46,9 +49,12 @@ public class ReverseConverterTests
|
||||
// Act
|
||||
var linqBreakdown = sqlServerBreakdown.ToLinqQueryBreakdown();
|
||||
|
||||
// Assert
|
||||
Assert.That(linqBreakdown.GroupByClause.Clause, Is.EqualTo("Department"));
|
||||
Assert.That(linqBreakdown.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(linqBreakdown.GroupByClause.Clause, Is.EqualTo("Department"));
|
||||
Assert.That(linqBreakdown.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -81,9 +87,12 @@ public class ReverseConverterTests
|
||||
|
||||
// Assert
|
||||
Assert.That(linqBreakdown, Is.Not.Null);
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("user_id"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("users"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("is_active = true"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("user_id"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("users"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("is_active = true"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -116,9 +125,12 @@ public class ReverseConverterTests
|
||||
|
||||
// Assert
|
||||
Assert.That(linqBreakdown, Is.Not.Null);
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("USER_ID"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("USERS"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("IS_ACTIVE = TRUE"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(linqBreakdown.SelectClause.Clause, Contains.Substring("USER_ID"));
|
||||
Assert.That(linqBreakdown.FromClause.Clause, Is.EqualTo("USERS"));
|
||||
Assert.That(linqBreakdown.WhereClause.Clause, Is.EqualTo("IS_ACTIVE = TRUE"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -252,10 +264,13 @@ public class ReverseConverterTests
|
||||
var result2 = sqlServerBreakdown.ConvertToDialect("POSTGRESQL");
|
||||
var result3 = sqlServerBreakdown.ConvertToDialect("postgresql");
|
||||
|
||||
// Assert
|
||||
Assert.That(result1, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(result2, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(result3, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(result1, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(result2, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(result3, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -281,10 +296,13 @@ public class ReverseConverterTests
|
||||
var backToLinq2 = toPostgres!.ToLinqQueryBreakdown();
|
||||
var finalToSqlServer = backToLinq2.ConvertToSqlServerBreakdown();
|
||||
|
||||
// Assert - Check that clauses are preserved
|
||||
Assert.That(backToLinq.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(backToLinq.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(backToLinq.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert - Check that clauses are preserved
|
||||
Assert.That(backToLinq.SelectClause.Clause, Contains.Substring("Id"));
|
||||
Assert.That(backToLinq.FromClause.Clause, Is.EqualTo("Users"));
|
||||
Assert.That(backToLinq.WhereClause.Clause, Is.EqualTo("IsActive = true"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -333,11 +351,14 @@ public class ReverseConverterTests
|
||||
var resultSqlServer1 = sqlServerBreakdown.ConvertToDialect("sqlserver");
|
||||
var resultSqlServer2 = sqlServerBreakdown.ConvertToDialect("sql_server");
|
||||
|
||||
// Assert
|
||||
Assert.That(resultPostgres1, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(resultPostgres2, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(resultSqlServer1, Is.SameAs(sqlServerBreakdown));
|
||||
Assert.That(resultSqlServer2, Is.SameAs(sqlServerBreakdown));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(resultPostgres1, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(resultPostgres2, Is.TypeOf<PostgreSqlBreakdown>());
|
||||
Assert.That(resultSqlServer1, Is.SameAs(sqlServerBreakdown));
|
||||
Assert.That(resultSqlServer2, Is.SameAs(sqlServerBreakdown));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user