public void ValidateConstruction_WhenModelHasNullProviderResultsRepositoryPolicy_ShouldShouldBeInvalid() { // Arrange CalculatorResiliencePolicies model = new CalculatorResiliencePolicies() { CalculationsRepository = Policy.NoOpAsync(), ProviderResultsRepository = null, ProviderSourceDatasetsRepository = Policy.NoOpAsync(), CacheProvider = Policy.NoOpAsync(), Messenger = Policy.NoOpAsync() }; CalculatorResiliencePoliciesValidator validator = new CalculatorResiliencePoliciesValidator(); // Act ValidationResult result = validator.Validate(model); // Assert result .IsValid .Should() .BeFalse(); result .Errors .Count .Should().Be(1); result .Errors[0] .ErrorMessage .Should().Contain("ProviderResultsRepository"); }
public void ValidateConstruction_WhenValidatorReturnsFalse_ShouldThrowArgumentNullExceptionWithListOfErrors() { // Arrange EngineSettings nullEngineSettings = Substitute.For <EngineSettings>(); ICalculationsRepository mockCalculationRepository = Substitute.For <ICalculationsRepository>(); ICalculatorResiliencePolicies mockCalculatorResiliencePolicies = Substitute.For <ICalculatorResiliencePolicies>(); var mockMessengerPolicy = Policy.NoOpAsync(); var mockProviderResultsRepositoryPolicy = Policy.NoOpAsync(); mockCalculatorResiliencePolicies.CacheProvider.Returns((AsyncPolicy)null); mockCalculatorResiliencePolicies.Messenger.Returns(mockMessengerPolicy); mockCalculatorResiliencePolicies.ProviderSourceDatasetsRepository.Returns((AsyncPolicy)null); mockCalculatorResiliencePolicies.CalculationResultsRepository.Returns(mockProviderResultsRepositoryPolicy); mockCalculatorResiliencePolicies.CalculationsApiClient.Returns((AsyncPolicy)null); IValidator <ICalculatorResiliencePolicies> validator = new CalculatorResiliencePoliciesValidator(); // Act Action validateAction = () => { ICalculationEngineServiceValidator calculationEngineServiceValidator = new CalculationEngineServiceValidator(validator, nullEngineSettings, mockCalculatorResiliencePolicies, mockCalculationRepository); }; // Assert validateAction .Should() .ThrowExactly <ArgumentNullException>() .And.Message .Should().Contain("CacheProvider") .And.Contain("ProviderSourceDatasetsRepository") .And.Contain("CalculationRepository"); }
public void ValidateConstruction_WhenModelIsValid_ResultShouldBeValid() { // Arrange CalculatorResiliencePolicies model = new CalculatorResiliencePolicies() { CalculationsRepository = Policy.NoOpAsync(), ProviderResultsRepository = Policy.NoOpAsync(), ProviderSourceDatasetsRepository = Policy.NoOpAsync(), CacheProvider = Policy.NoOpAsync(), Messenger = Policy.NoOpAsync() }; CalculatorResiliencePoliciesValidator validator = new CalculatorResiliencePoliciesValidator(); // Act ValidationResult result = validator.Validate(model); // Assert result .IsValid .Should() .BeTrue(); }