Exemplo n.º 1
0
    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)}");;
    }
Exemplo n.º 2
0
    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();
    }
Exemplo n.º 3
0
    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>();
    }
Exemplo n.º 4
0
    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();
    }