diff --git a/Tests/FluentAssertions.Specs/Xml/XDocumentAssertionSpecs.cs b/Tests/FluentAssertions.Specs/Xml/XDocumentAssertionSpecs.cs
index 2de6972558..237832c785 100644
--- a/Tests/FluentAssertions.Specs/Xml/XDocumentAssertionSpecs.cs
+++ b/Tests/FluentAssertions.Specs/Xml/XDocumentAssertionSpecs.cs
@@ -1177,7 +1177,7 @@ public void When_asserting_document_has_two_child_elements_and_it_does_it_succee
}
[Fact]
- public void Asserting_document_inside_an_assertion_scope_it_checks_the_whole_assertion_scope_before_failing()
+ public void Asserting_document_null_inside_an_assertion_scope_it_checks_the_whole_assertion_scope_before_failing()
{
// Arrange
XDocument document = null;
@@ -1197,7 +1197,7 @@ public void Asserting_document_inside_an_assertion_scope_it_checks_the_whole_ass
}
[Fact]
- public void Asserting_document_inside_an_assertion_scope_it_checks_the_whole_assertion_scope_before_failing_()
+ public void Asserting_with_document_root_null_inside_an_assertion_scope_it_checks_the_whole_assertion_scope_before_failing()
{
// Arrange
XDocument document = new();
@@ -1274,7 +1274,7 @@ public void Document_is_valid_and_expected_null_with_x_name_overload_it_fails()
}
[Fact]
- public void Chaining_which_after_asserting_and_the_document_has_more_than_two_child_elements_it_fails()
+ public void Chaining_after_a_successful_occurrence_check_does_continue_the_assertion()
{
// Arrange
var document = XDocument.Parse(
@@ -1284,12 +1284,29 @@ public void Chaining_which_after_asserting_and_the_document_has_more_than_two_ch
");
+ // Act / Assert
+ document.Should().HaveElement("child", AtLeast.Twice())
+ .Which.Should().NotBeNull();
+ }
+
+ [Fact]
+ public void Chaining_after_a_non_successful_occurrence_check_does_not_continue_the_assertion()
+ {
+ // Arrange
+ var document = XDocument.Parse(
+ @"
+
+
+
+ ");
+
// Act
- Action act = () => document.Should().HaveElement("child", AtLeast.Twice())
+ Action act = () => document.Should().HaveElement("child", Exactly.Once())
.Which.Should().NotBeNull();
// Assert
- act.Should().NotThrow();
+ act.Should().Throw()
+ .WithMessage("Expected document to have *exactly*1 child element(s) \"child\", but found 3.");
}
[Fact]
diff --git a/Tests/FluentAssertions.Specs/Xml/XElementAssertionSpecs.cs b/Tests/FluentAssertions.Specs/Xml/XElementAssertionSpecs.cs
index 17fe547f32..04ee5c7a3c 100644
--- a/Tests/FluentAssertions.Specs/Xml/XElementAssertionSpecs.cs
+++ b/Tests/FluentAssertions.Specs/Xml/XElementAssertionSpecs.cs
@@ -1324,7 +1324,23 @@ public void Element_is_valid_and_expected_null_with_x_name_overload_it_fails()
}
[Fact]
- public void Chaining_which_after_asserting_and_the_element_has_more_than_two_child_elements_it_fails()
+ public void Chaining_after_a_successful_occurrence_check_does_continue_the_assertion()
+ {
+ // Arrange
+ var element = XElement.Parse(
+ @"
+
+
+
+ ");
+
+ // Act / Assert
+ element.Should().HaveElement("child", AtLeast.Twice())
+ .Which.Should().NotBeNull();
+ }
+
+ [Fact]
+ public void Chaining_after_a_non_successful_occurrence_check_does_not_continue_the_assertion()
{
// Arrange
var element = XElement.Parse(
@@ -1335,11 +1351,12 @@ public void Chaining_which_after_asserting_and_the_element_has_more_than_two_chi
");
// Act
- Action act = () => element.Should().HaveElement("child", AtLeast.Twice())
+ Action act = () => element.Should().HaveElement("child", Exactly.Once())
.Which.Should().NotBeNull();
// Assert
- act.Should().NotThrow();
+ act.Should().Throw()
+ .WithMessage("Expected element to have *exactly*1 child element(s) \"child\", but found 3.");
}
[Fact]