public async Task For_Validate_When_RootValidatorHasSetUpAsyncPropertyValidatorAndValidObjectIsPassed_Then_ValidationErrorsAreReturned() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); Expression <Func <RootValidatorsTestsCommon.TestClass, string> > expression = obj => obj.SomeProperty; rootAsyncValidator.SetupAsync(x => x.SomeProperty) .AddRule(async x => { await Task.CompletedTask; return(x != null); }, "cannot be null", "NOT_NULL"); var toValidate = (object)new RootValidatorsTestsCommon.TestClass { SomeProperty = null }; // Act: var validationErrors = await rootAsyncValidator.Validate(toValidate); // Assert: validationErrors.Count.Should().Be(1); validationErrors[0].ErrorMessage.Should().Be("cannot be null"); validationErrors[0].ErrorCode.Should().Be("NOT_NULL"); validationErrors[0].PropertyPath.IsEmpty.Should().Be(false); validationErrors[0].ProvidedValue.Should().Be(null); }
public void For_SetupAsync_When_ProvidedExpressionIsNull_Then_ExceptionIsThrown() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); Expression <Func <RootValidatorsTestsCommon.TestClass, string> > expression = null; // Act & Assert: Assert.Throws <ArgumentNullException>(() => rootAsyncValidator.SetupAsync(expression)); }
public async Task For_ValidateObj_When_ValidObjectIsPassed_Then_ValidationErrorsAreReturned() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); var toValidate = (object)new RootValidatorsTestsCommon.TestClass(); // Act: var result = await rootAsyncValidator.Validate(toValidate); // Assert: result.Count.Should().Be(0); }
public void For_SetupAsync_When_SyncPropertyValidatorForExpressionAlreadyExists_Then_ExceptionIsThrown() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); Expression <Func <RootValidatorsTestsCommon.TestClass, string> > expression = obj => obj.SomeProperty; var propertyValidator = rootAsyncValidator.Setup(expression); // Act & Assert: var exception = Assert.Throws <InvalidOperationException>(() => rootAsyncValidator.SetupAsync(expression)); exception.Message.Should().Be("Member already has assigned synchronous validator"); }
public void For_SetupAsync_When_ThereIsNoPropertyValidatorForExpression_Then_NewPropertyValidatorIsCreated() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); Expression <Func <RootValidatorsTestsCommon.TestClass, string> > expression = obj => obj.SomeProperty; // Act: var result = rootAsyncValidator.SetupAsync(expression); // Assert: result.Should().BeAssignableTo <AsyncPropertyValidator <string> >(); }
public void For_SetupAsync_When_AsyncPropertyValidatorForExpressionAlreadyExists_Then_ItIsReturned() { // Arrange: var rootAsyncValidator = new RootAsyncValidatorImplementation(); Expression <Func <RootValidatorsTestsCommon.TestClass, string> > expression = obj => obj.SomeProperty; var propertyValidator = rootAsyncValidator.SetupAsync(expression); // Act: var result = rootAsyncValidator.SetupAsync(expression); // Assert: result.Should().Be(propertyValidator); }