public void WhenCalled_ReplacesPreviousItems() { var expectedValuesFirstTime = new List<int> { 1 }; var expectedValuesSecondTime = new List<int> { 2 }; var sut = new EqualitySieve<ABusinessObject>().ForProperty(x => x.AnInt).ForValue(1); sut.AcceptableValues.Should().BeEquivalentTo(expectedValuesFirstTime); sut.ForValue(2); sut.AcceptableValues.Should().BeEquivalentTo(expectedValuesSecondTime); }
public void CanBeCalledAgainToReplaceValueAfterFirstCausesAnError() { const int ACCEPTABLE_VALUE = 1; string acceptableValueInStringform = ACCEPTABLE_VALUE.ToString(CultureInfo.InvariantCulture); const string UNACCEPTABLE_VALUE = "1abc"; var expectedFinalList = new List<int> { ACCEPTABLE_VALUE }; var sut = new EqualitySieve<ABusinessObject>().ForProperty(x => x.AnInt) .WithInvalidValueBehavior(InvalidValueBehavior.ThrowInvalidSieveValueException) .ForValue(UNACCEPTABLE_VALUE); // ReSharper disable once UnusedVariable -- used in deferred action Action act = () => { var values = sut.AcceptableValues; }; act.ShouldThrow<InvalidSieveValueException>() .And.Message.Should() .ContainEquivalentOf(UNACCEPTABLE_VALUE); sut.ForValue(acceptableValueInStringform); sut.AcceptableValues.Should().BeEquivalentTo(expectedFinalList); }