public void ValidatesIncompleteBicycle() { Bicycle bicycle = null; ValidationResult validationResult = null; "Given an empty bicycle instance" .Given(() => { bicycle = new Bicycle(); }); "When is validated" .When(() => { IBicyleRepository bicyleRepository = Mock.Of <IBicyleRepository>(); var bicycleValidator = new BicycleValidator(bicyleRepository); validationResult = bicycleValidator.Validate(bicycle); }); "Then the bicycle is not valid" .Then(() => { Assert.False(validationResult.IsValid); }); "And it has three validation errors" .Then(() => { Assert.Equal(3, validationResult.Errors.Count); }); }
public BicycleValidator(IBicyleRepository bicyleRepository) { RuleFor(b => b.Name).NotEmpty(); RuleFor(b => b.Quantity).GreaterThan(0); RuleFor(b => b.RentPrice).GreaterThan(0); RuleSet(ApplyTo.Post, () => { RuleFor(b => b.Id).Equal(0); Custom(b => { bool bicycleWithSameNameExists = bicyleRepository.Get(x => x.Name.ToLower() == b.Name.ToLower()).Any(); if (bicycleWithSameNameExists) { return(new ValidationFailure("Name", "A bicycle with the same name already exists.", "AlreadyExists")); } return(null); }); }); RuleSet(ApplyTo.Put, () => { RuleFor(b => b.Id).GreaterThan(0); Custom(b => { bool bicycleWithSameNameExists = bicyleRepository.Get(x => x.Name.ToLower() == b.Name.ToLower() && x.Id != b.Id).Any(); if (bicycleWithSameNameExists) { return(new ValidationFailure("Name", "A bicycle with the same name already exists.", "AlreadyExists")); } return(null); }); }); }