public void IsEqualTo_WhenComparingValueObjectsOfDifferentTypes_ThrowInvalidValueObjectComparisonException() { // Arrange var valueForPropertyA = "test-value-A"; var valueForPropertyB = "test-value-B"; var differentValueForPropertyB = "different-test-value-B"; var valueObjectA = new FakeValueObjectA() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var valueObjectB = new FakeValueObjectB() { PropertyA = valueForPropertyA, PropertyB = differentValueForPropertyB }; // Act Action areEqualAToBAction = () => valueObjectA.IsEqualTo(valueObjectB); Action areEqualBToAAction = () => valueObjectB.IsEqualTo(valueObjectA); // Assert areEqualAToBAction.ShouldThrow <InvalidValueObjectComparisonException>().Message.ShouldContain($"{typeof(FakeValueObjectA)} vs {typeof(FakeValueObjectB)}"); areEqualBToAAction.ShouldThrow <InvalidValueObjectComparisonException>().Message.ShouldContain($"{typeof(FakeValueObjectB)} vs {typeof(FakeValueObjectA)}");; }
public void IsEqualTo_TwoNotEqualValueObjectsOfTheSameType_ReturnsFalse() { // Arrange var valueForPropertyA = "test-value-A"; var valueForPropertyB = "test-value-B"; var differentValueForPropertyB = "different-test-value-B"; var valueObjectA = new FakeValueObjectA() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var valueObjectB = new FakeValueObjectA() { PropertyA = valueForPropertyA, PropertyB = differentValueForPropertyB }; // Act var areEqualAToB = valueObjectA.IsEqualTo(valueObjectB); var areEqualBToA = valueObjectB.IsEqualTo(valueObjectA); // Assert areEqualAToB.ShouldBeFalse(); areEqualBToA.ShouldBeFalse(); }
public void IsEqualTo_TwoAggregatesNotOfTheSameType_ThrowsInvalidComparisonException() { // Arrange var valueForPropertyA = "test-value-A"; var valueForPropertyB = "test-value-B"; var differentValueForPropertyB = "different-test-value-B"; var valueObjectA = new FakeValueObjectA() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var valueObjectB = new FakeValueObjectB() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var differentValueObjectForPropertyB = new FakeValueObjectB() { PropertyA = valueForPropertyA, PropertyB = differentValueForPropertyB }; var aggregateA = new FakeAggregateA() { PropertyA = valueObjectA, PropertyB = valueObjectB }; var aggregateB = new FakeAggregateB() { PropertyA = valueObjectA, PropertyB = differentValueObjectForPropertyB }; // Act Action isEqualToAToBAction = () => aggregateA.IsEqualTo(aggregateB); Action isEqualToBToAAction = () => aggregateB.IsEqualTo(aggregateA); // Assert isEqualToAToBAction.ShouldThrow <InvalidAggregateComparisonException>(); isEqualToBToAAction.ShouldThrow <InvalidAggregateComparisonException>(); }
public void IsEqualTo_TwoEqualAggregatesOfTheSameType_ReturnsTrue() { // Arrange var valueForPropertyA = "test-value-A"; var valueForPropertyB = "test-value-B"; var valueObjectA = new FakeValueObjectA() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var valueObjectB = new FakeValueObjectB() { PropertyA = valueForPropertyA, PropertyB = valueForPropertyB }; var aggregateA = new FakeAggregateA() { PropertyA = valueObjectA, PropertyB = valueObjectB }; var aggregateB = new FakeAggregateA() { PropertyA = valueObjectA, PropertyB = valueObjectB }; // Act var areEqualAToB = aggregateA.IsEqualTo(aggregateB); var areEqualBToA = aggregateB.IsEqualTo(aggregateA); // Assert areEqualAToB.ShouldBeTrue(); areEqualBToA.ShouldBeTrue(); }