Exemplo n.º 1
0
        public void SetUp()
        {
            _fundingTemplateService = Substitute.For <IFundingTemplateService>();

            IPolicyRepository policyRepository = Substitute.For <IPolicyRepository>();

            _validator = new SaveFundingConfigurationValidator(policyRepository,
                                                               new PolicyResiliencePolicies
            {
                PolicyRepository = Polly.Policy.NoOpAsync()
            },
                                                               _fundingTemplateService);

            policyRepository.GetFundingStreamById(Arg.Any <string>())
            .Returns(new FundingStream());
            policyRepository.GetFundingPeriodById(Arg.Any <string>())
            .Returns(new FundingPeriod());
        }
 public TemplateController(IFundingTemplateService fundingTemplateService)
 {
     Guard.ArgumentNotNull(fundingTemplateService, nameof(fundingTemplateService));
     _fundingTemplateService = fundingTemplateService;
 }
Exemplo n.º 3
0
        public SaveFundingConfigurationValidator(IPolicyRepository policyRepository,
                                                 IPolicyResiliencePolicies policyResiliencePolicies,
                                                 IFundingTemplateService fundingTemplateService)
        {
            Guard.ArgumentNotNull(policyRepository, nameof(policyRepository));
            Guard.ArgumentNotNull(fundingTemplateService, nameof(fundingTemplateService));
            Guard.ArgumentNotNull(policyResiliencePolicies?.PolicyRepository, nameof(policyResiliencePolicies.PolicyRepository));

            ResiliencePolicy policyRepositoryPolicy = policyResiliencePolicies.PolicyRepository;

            RuleFor(_ => _.ApprovalMode)
            .Must(_ => _ != ApprovalMode.Undefined)
            .WithMessage("No valid approval mode was selected");

            RuleFor(model => model.FundingStreamId)
            .NotEmpty()
            .WithMessage("No funding stream id was provided to SaveFundingConfiguration")
            .CustomAsync(async(name, context, cancellationToken) =>
            {
                FundingConfiguration model = context.ParentContext.InstanceToValidate as FundingConfiguration;
                if (!string.IsNullOrWhiteSpace(model.FundingStreamId))
                {
                    FundingStream fundingStream = await policyRepositoryPolicy.ExecuteAsync(() => policyRepository.GetFundingStreamById(model.FundingStreamId));
                    if (fundingStream == null)
                    {
                        context.AddFailure("Funding stream not found");
                    }
                }
            });

            RuleFor(model => model.FundingPeriodId)
            .NotEmpty()
            .WithMessage("No funding period id was provided to SaveFundingConfiguration")
            .CustomAsync(async(name, context, cancellationToken) =>
            {
                FundingConfiguration model = context.ParentContext.InstanceToValidate as FundingConfiguration;
                if (!string.IsNullOrWhiteSpace(model.FundingPeriodId))
                {
                    FundingPeriod fundingPeriod = await policyRepositoryPolicy.ExecuteAsync(() => policyRepository.GetFundingPeriodById(model.FundingPeriodId));
                    if (fundingPeriod == null)
                    {
                        context.AddFailure("Funding period not found");
                    }
                }
            });

            RuleFor(model => model.DefaultTemplateVersion)
            .CustomAsync(async(name, context, cancellationToken) =>
            {
                FundingConfiguration model = context.ParentContext.InstanceToValidate as FundingConfiguration;

                string fundingStreamId        = model.FundingStreamId;
                string defaultTemplateVersion = model.DefaultTemplateVersion;
                string fundingPeriodId        = model.FundingPeriodId;

                if (!string.IsNullOrWhiteSpace(fundingStreamId) && !string.IsNullOrWhiteSpace(fundingPeriodId) && !string.IsNullOrWhiteSpace(defaultTemplateVersion))
                {
                    if (!await fundingTemplateService.TemplateExists(fundingStreamId, fundingPeriodId, defaultTemplateVersion))
                    {
                        context.AddFailure("Default template not found");
                    }
                }
            });

            RuleFor(_ => _.UpdateCoreProviderVersion)
            .Must(v => v == UpdateCoreProviderVersion.Manual)
            .When(_ => _.ProviderSource != CalculateFunding.Models.Providers.ProviderSource.FDZ, ApplyConditionTo.CurrentValidator)
            .WithMessage(x => $"UpdateCoreProviderVersion - {x.UpdateCoreProviderVersion.ToString()} is not valid for provider source - {x.ProviderSource}");
        }