public void When_validating_nested_properties_that_have_cyclic_references_it_should_throw() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- var cyclicRoot = new CyclicRoot { Text = "Root", }; cyclicRoot.Level = new CyclicLevel1 { Text = "Level1", Root = cyclicRoot }; var cyclicRootDto = new CyclicRootDto { Text = "Root", }; cyclicRootDto.Level = new CyclicLevel1Dto { Text = "Level1", Root = cyclicRootDto }; //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- Action act = () => cyclicRoot.ShouldHave().AllProperties().IncludingNestedObjects().EqualTo(cyclicRootDto); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- act .ShouldThrow<AssertFailedException>() .WithMessage("Expected property Level.Root.Level to be*but it contains a cyclic reference*", ComparisonMode.Wildcard); }
public void When_validating_nested_properties_and_ignoring_cyclic_references_it_should_succeed() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- var cyclicRoot = new CyclicRoot { Text = "Root", }; cyclicRoot.Level = new CyclicLevel1 { Text = "Level1", Root = cyclicRoot, }; var cyclicRootDto = new CyclicRootDto { Text = "Root", }; cyclicRootDto.Level = new CyclicLevel1Dto { Text = "Level1", Root = cyclicRootDto, }; //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- Action act = () => cyclicRoot.ShouldHave() .AllProperties() .IncludingNestedObjects(CyclicReferenceHandling.Ignore) .EqualTo(cyclicRootDto); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- act.ShouldNotThrow(); }
public void When_validating_nested_properties_and_ignoring_cyclic_references_it_should_succeed() { //----------------------------------------------------------------------------------------------------------- // Arrange //----------------------------------------------------------------------------------------------------------- var cyclicRoot = new CyclicRoot { Text = "Root", }; cyclicRoot.Level = new CyclicLevel1 { Text = "Level1", Root = cyclicRoot, }; var cyclicRootDto = new CyclicRootDto { Text = "Root", }; cyclicRootDto.Level = new CyclicLevel1Dto { Text = "Level1", Root = cyclicRootDto, }; //----------------------------------------------------------------------------------------------------------- // Act //----------------------------------------------------------------------------------------------------------- Action act = () => cyclicRoot.ShouldBeEquivalentTo(cyclicRootDto, options => options.IgnoringCyclicReferences()); //----------------------------------------------------------------------------------------------------------- // Assert //----------------------------------------------------------------------------------------------------------- act.ShouldNotThrow(); }