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:
Thom Lamb
2026-05-27 11:59:47 -05:00
co-authored by Claude Opus 4.7
parent 505ada5017
commit 67512d23e1
47 changed files with 2132 additions and 1113 deletions
@@ -17,9 +17,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.Select("id, name");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
});
}
[Test]
@@ -31,9 +34,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.From("users");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.FromClause.Clause, Is.EqualTo("users"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.FromClause.Clause, Is.EqualTo("users"));
});
}
[Test]
@@ -45,9 +51,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.Where("active = 1");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 1"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 1"));
});
}
[Test]
@@ -59,9 +68,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.GroupBy("department");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.GroupByClause.Clause, Is.EqualTo("department"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.GroupByClause.Clause, Is.EqualTo("department"));
});
}
[Test]
@@ -73,9 +85,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.Having("COUNT(*) > 5");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
});
}
[Test]
@@ -87,9 +102,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.OrderBy("name ASC");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.OrderByClause.Clause, Is.EqualTo("name ASC"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.OrderByClause.Clause, Is.EqualTo("name ASC"));
});
}
[Test]
@@ -101,9 +119,12 @@ public class QueryBreakdownExtensionsTests
// Act
var result = query.AddWhere("AND age > 18");
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.WhereClause.Clause, Does.Contain("active = 1"));
Assert.Multiple(() =>
{
// Assert
Assert.That(result, Is.SameAs(query));
Assert.That(query.WhereClause.Clause, Does.Contain("active = 1"));
});
Assert.That(query.WhereClause.Clause, Does.Contain("AND age > 18"));
}
@@ -120,10 +141,13 @@ public class QueryBreakdownExtensionsTests
.From("users")
.Where("active = 1");
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
Assert.That(query.FromClause.Clause, Is.EqualTo("users"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 1"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
Assert.That(query.FromClause.Clause, Is.EqualTo("users"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 1"));
});
}
[Test]
@@ -138,13 +162,16 @@ public class QueryBreakdownExtensionsTests
.Having("COUNT(*) > 5")
.OrderBy("employee_count DESC");
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("department, COUNT(*) as employee_count"));
Assert.That(query.FromClause.Clause, Is.EqualTo("employees"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("salary > 50000"));
Assert.That(query.GroupByClause.Clause, Is.EqualTo("department"));
Assert.That(query.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
Assert.That(query.OrderByClause.Clause, Is.EqualTo("employee_count DESC"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("department, COUNT(*) as employee_count"));
Assert.That(query.FromClause.Clause, Is.EqualTo("employees"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("salary > 50000"));
Assert.That(query.GroupByClause.Clause, Is.EqualTo("department"));
Assert.That(query.HavingClause.Clause, Is.EqualTo("COUNT(*) > 5"));
Assert.That(query.OrderByClause.Clause, Is.EqualTo("employee_count DESC"));
});
}
[Test]
@@ -186,12 +213,18 @@ public class QueryBreakdownExtensionsTests
.Select("*")
.From("active_users");
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
Assert.That(query.WithClauses[0].TableName, Is.EqualTo("active_users"));
Assert.That(query.SelectClause.Clause, Is.EqualTo("*"));
Assert.That(query.FromClause.Clause, Is.EqualTo("active_users"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
});
Assert.Multiple(() =>
{
Assert.That(query.WithClauses[0].TableName, Is.EqualTo("active_users"));
Assert.That(query.SelectClause.Clause, Is.EqualTo("*"));
Assert.That(query.FromClause.Clause, Is.EqualTo("active_users"));
});
}
[Test]
@@ -236,11 +269,17 @@ public class QueryBreakdownExtensionsTests
.From("active_users u LEFT JOIN recent_orders o ON u.id = o.user_id")
.GroupBy("u.id, u.name");
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(2));
Assert.That(query.WithClauses[0].TableName, Is.EqualTo("active_users"));
Assert.That(query.WithClauses[1].TableName, Is.EqualTo("recent_orders"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(2));
});
Assert.Multiple(() =>
{
Assert.That(query.WithClauses[0].TableName, Is.EqualTo("active_users"));
Assert.That(query.WithClauses[1].TableName, Is.EqualTo("recent_orders"));
});
}
private static readonly string[] columns = new[] { "id", "name", "email" };
@@ -259,10 +298,13 @@ public class QueryBreakdownExtensionsTests
var sql = query.GetSql();
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
Assert.That(sql, Does.Contain("active_users (id, name, email)"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
Assert.That(sql, Does.Contain("active_users (id, name, email)"));
});
}
[Test]
@@ -280,9 +322,12 @@ public class QueryBreakdownExtensionsTests
.Select("*")
.From("active_users");
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.IsUsingWithClause, Is.True);
Assert.That(query.WithClauses, Has.Count.EqualTo(1));
});
Assert.That(query.WithClauses[0].TableName, Is.EqualTo("active_users"));
}
@@ -331,8 +376,11 @@ public class QueryBreakdownExtensionsTests
// Assert
Assert.That(sql, Does.Contain("WITH"));
Assert.That(sql, Does.Contain("monthly_sales AS"));
Assert.That(sql, Does.Contain("LAG(total_sales)"));
Assert.That(query.IsUsingWithClause, Is.True);
Assert.Multiple(() =>
{
Assert.That(sql, Does.Contain("LAG(total_sales)"));
Assert.That(query.IsUsingWithClause, Is.True);
});
}
[Test]
@@ -355,9 +403,12 @@ public class QueryBreakdownExtensionsTests
var sql = query.GetSql();
// Assert
Assert.That(query.WithClauses, Has.Count.EqualTo(2));
Assert.That(sql, Does.Contain("active_users AS"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.WithClauses, Has.Count.EqualTo(2));
Assert.That(sql, Does.Contain("active_users AS"));
});
Assert.That(sql, Does.Contain("user_orders AS"));
Assert.That(sql, Does.Contain("customer_tier"));
}
@@ -467,9 +518,12 @@ public class QueryBreakdownExtensionsTests
// Act - Overwrite clauses
query.Select("id, name").Where("active = 0");
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 0"));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo("id, name"));
Assert.That(query.WhereClause.Clause, Is.EqualTo("active = 0"));
});
}
[Test]
@@ -481,10 +535,13 @@ public class QueryBreakdownExtensionsTests
.From("")
.Where("");
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo(""));
Assert.That(query.FromClause.Clause, Is.EqualTo(""));
Assert.That(query.WhereClause.Clause, Is.EqualTo(""));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo(""));
Assert.That(query.FromClause.Clause, Is.EqualTo(""));
Assert.That(query.WhereClause.Clause, Is.EqualTo(""));
});
}
[Test]
@@ -495,9 +552,12 @@ public class QueryBreakdownExtensionsTests
.Select(" id, name ")
.From(" users ");
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo(" id, name "));
Assert.That(query.FromClause.Clause, Is.EqualTo(" users "));
Assert.Multiple(() =>
{
// Assert
Assert.That(query.SelectClause.Clause, Is.EqualTo(" id, name "));
Assert.That(query.FromClause.Clause, Is.EqualTo(" users "));
});
}
#endregion