samedi 27 juin 2015

How to unit test simple property has validator set?

I have similar rules for some properties in multiple model objects and I want to replace them with custom property validators to avoid code duplication in unit tests.

I have my property validator:

public class IntIdPropertyValidator: PropertyValidator
{
    public IntIdPropertyValidator()
        : base("Property {PropertyName} should be greater than 0")
    {
    }

    protected override bool IsValid(PropertyValidatorContext context)
    {
        var value = (int)context.PropertyValue;

        return value > 0;
    }
}

And wiring it up in model validator class:

public class SomeRequestValidator : AbstractValidator<CreateWordRequest>
{
    public SomeRequestValidator()
    {
        RuleFor(x => x.Id).SetValidator(new IntIdPropertyValidator());
    }
}

Tried to test:

[Test]
public void Validate_LeftLanguageIdHasValidator_Success()
{
    Init();

    validator.ShouldHaveChildValidator(x => x.LeftLanguageId, typeof(IntIdPropertyValidator));
}

But test always fails.

So, how can I test that validator is actually set for property Id?

Aucun commentaire:

Enregistrer un commentaire