public void HaveError_When_DevolvedSourceOfFundingExist_For_NonRequired_Fundlines(string fundingLine, string devolvedSourceOfFunding)
 {
     easRecord.FundingLine = fundingLine;
     easRecord.DevolvedAreaSourceOfFunding = devolvedSourceOfFunding;
     _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, _devolvedContracts, _sofCodeDictionary, dateTimeProviderMock.Object, 1);
     _validator.ShouldHaveValidationErrorFor(x => x.DevolvedAreaSourceOfFunding, easRecord).WithErrorCode("DevolvedAreaSourceOfFunding_02");
 }
Esempio n. 2
0
        public void FundingLine_03_No_Error_WhenContractEndDate_IsNull(string year, string month)
        {
            _contractAllocations = new List <ContractAllocation>()
            {
                new ContractAllocation()
                {
                    FundingStreamPeriodCode = "APPS2021",
                    StartDate = new DateTime(2021, 06, 01),
                    EndDate   = null
                }
            };

            var easRecord = new EasCsvRecord()
            {
                AdjustmentType = "adjustment",
                FundingLine    = "FundingLine2021",
                CalendarYear   = year,
                CalendarMonth  = month,
                Value          = "10"
            };

            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.DoesNotContain(result.Errors, x => x.ErrorCode.Equals("FundingLine_03"));
        }
 public void DevolvedAreaSourceOfFunding_04_Error_ContractInvalid()
 {
     easRecord.FundingLine = "Adult Education - Eligible for MCA/GLA funding (non-procured)";
     easRecord.DevolvedAreaSourceOfFunding = "116";
     _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, _devolvedContracts, _sofCodeDictionary, dateTimeProviderMock.Object, 1);
     _validator.ShouldHaveValidationErrorFor(x => x.DevolvedAreaSourceOfFunding, easRecord).WithErrorCode("DevolvedAreaSourceOfFunding_04");
 }
        public void NotHaveError_When_DevolvedSourceOfFunding_DoesNotExist_For_NonRequired_Fundlines(string fundingLine, string devolvedSourceOfFunding)
        {
            easRecord.FundingLine = fundingLine;
            easRecord.DevolvedAreaSourceOfFunding = devolvedSourceOfFunding;
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, _devolvedContracts, _sofCodeDictionary, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.DoesNotContain(result.Errors, x => x.ErrorCode.Equals("DevolvedAreaSourceOfFunding_02"));
        }
Esempio n. 5
0
        public Credential
            (string username, string password, string email)
        {
            _oldPassword = password;
            InitializeVars(GuidGenerator.NewSequentialGuid(),
                           username, password, email, 1);
            var credentialRule = new CreateCredentialRules();

            CheckRule(BusinessRulesValidator <Credential> .BuildValidator(credentialRule, this));
        }
Esempio n. 6
0
        public Credential
            (Guid id, string username, string password,
            string email, int isActive)
        {
            _oldPassword = password;
            InitializeVars(id, username, password,
                           email, isActive);
            var credentialRule = new UpdateCredentialRules();

            CheckRule(BusinessRulesValidator <Credential> .BuildValidator(credentialRule, this));
        }
        public void DevolvedAreaSourceOfFunding_04_NoError_ContractValid()
        {
            easRecord.FundingLine   = "Adult Education - Eligible for MCA/GLA funding (non-procured)";
            easRecord.CalendarMonth = "10";
            easRecord.DevolvedAreaSourceOfFunding = "116";
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, _devolvedContracts, _sofCodeDictionary, dateTimeProviderMock.Object, 1);

            var result = _validator.Validate(easRecord);

            Assert.DoesNotContain(result.Errors, x => x.ErrorCode.Equals("DevolvedAreaSourceOfFunding_04"));
        }
Esempio n. 8
0
        public void FundingLine_02_HaveError_When_ContractTypeIsNotFound_For_A_FundingLine()
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2020",
                Value          = "1",
                FundingLine    = "FundingLineWithoutContract",
                AdjustmentType = "adjustmentType"
            };

            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.FundingLine, easRecord).WithErrorCode("FundingLine_02");
        }
        public void HaveError_For_Invalid_FundingLine_Lookup()
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2020",
                Value          = "1",
                FundingLine    = paymentTypes[0].FundingLine.Name,
                AdjustmentType = "InvalidAdjustmentType"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(null, null, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.AdjustmentType, easRecord).WithErrorCode("AdjustmentType_02");
        }
Esempio n. 10
0
        public void HaveError_For_Empty_Value(string value)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2018",
                FundingLine    = paymentTypes[0].FundingLine.Name,
                AdjustmentType = "adjustmentType",
                Value          = value
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2018, 09, 01));
            _validator = new BusinessRulesValidator(null, null, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.Value, easRecord).WithErrorCode("Value_01");
        }
        public void HaveError_WhenCalendarMonth_Is_NotValid(string calendarMonth)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = calendarMonth,
                CalendarYear   = "2020",
                Value          = "1",
                AdjustmentType = "AdjustmentType",
                FundingLine    = "FundingLine"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(null, null, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.CalendarMonth, easRecord).WithErrorCode("CalendarMonth_01");
        }
Esempio n. 12
0
        public void FundingLine_01_HaveError_When_FundingLine_IsNotFound(string fundingLine)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2020",
                Value          = "1",
                FundingLine    = fundingLine,
                AdjustmentType = "adjustmentType"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(null, null, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.FundingLine, easRecord).WithErrorCode("FundingLine_01");
        }
        public void HaveErrorWhenCalendarMonthAndYearAreNotInTheAcademicYear(string calendarMonth, string calendarYear)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = calendarMonth,
                CalendarYear   = calendarYear,
                Value          = "1",
                AdjustmentType = "AdjustmentType",
                FundingLine    = "FundingLine"
            };

            // Mock future date , so that validation doesn't fail on Calendar Month future date
            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2021, 10, 01));
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.CalendarMonth, easRecord).WithErrorCode("CalendarYearCalendarMonth_02");
        }
        public void Not_HaveAnError_WhenCalendarYear_Is_Valid()
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2020",
                Value          = "1",
                AdjustmentType = "AdjustmentType",
                FundingLine    = "FundingLine"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.True(result.IsValid);
        }
Esempio n. 15
0
        public void FundingLine_03_NotHaveError_When_ContractTypeIsNotRequiredForFundline(string fundline)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "7",
                CalendarYear   = "2020",
                Value          = "1",
                FundingLine    = fundline,
                AdjustmentType = "adjustmentType"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.DoesNotContain(result.Errors, x => x.ErrorCode.Equals("FundingLine_03"));
        }
        public void AllowValidAlphaNumericCharacters_When_Validating_AdjustmentType(string adjustmentType)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "8",
                CalendarYear   = "2020",
                Value          = "1",
                FundingLine    = "Funding-123+.Line",
                AdjustmentType = adjustmentType
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.True(result.IsValid);
        }
        public void NotHaveErrorWhenCalendarMonthAndYearAreInTheAcademicYear(string calendarMonth, string calendarYear)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = calendarMonth,
                CalendarYear   = calendarYear,
                Value          = "1",
                AdjustmentType = "AdjustmentType",
                FundingLine    = "FundingLine"
            };

            // Mock future date , so that validation doesn't fail on Calendar Month future date
            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2021, 10, 01));
            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            var result = _validator.Validate(easRecord);

            Assert.False(result?.Errors != null && result.Errors.Any(x => x.ErrorCode == $"CalendarYearCalendarMonth_02"));
        }
        public void HaveError_WhenCalendarYear_Is_NotValid(string calendarYear)
        {
            var easRecord = new EasCsvRecord()
            {
                CalendarMonth  = "12",
                CalendarYear   = calendarYear,
                Value          = "1",
                AdjustmentType = "AdjustmentType",
                FundingLine    = "FundingLine"
            };

            dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(new DateTime(2020, 09, 01));
            _validator = new BusinessRulesValidator(null, null, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.CalendarYear, easRecord).WithErrorCode("CalendarYear_01");
            var result = _validator.Validate(easRecord);
            //Assert.False(result.IsValid);
            //Assert.Equal("The CalendarYear is not valid.", result.Errors[0].ErrorMessage);
            //Assert.Equal("CalendarYear_01", result.Errors[0].ErrorCode);
        }
        private async Task <List <ValidationErrorModel> > ValidateAsync(IEasJobContext easJobContext, IReadOnlyDictionary <string, ValidationErrorRule> validationErrorReferenceData, IEnumerable <EasCsvRecord> easCsvRecords, CancellationToken cancellationToken)
        {
            List <ValidationResult> validationResults = new List <ValidationResult>();
            List <ValidationResult> businessRulesValidationResults = new List <ValidationResult>();

            cancellationToken.ThrowIfCancellationRequested();

            List <PaymentType> paymentTypes = await _easPaymentService.GetAllPaymentTypes(cancellationToken);

            List <ContractAllocation> contractsForProvider = await _fcsDataService.GetContractsForProviderAsync(easJobContext.Ukprn, cancellationToken);

            List <FundingLineContractTypeMapping> fundingLineContractTypeMappings = await _fundingLineContractTypeMappingDataService.GetAllFundingLineContractTypeMappings(cancellationToken);

            var devolvedContracts = await _fcsDataService.GetDevolvedContractsForProviderAsync(easJobContext.Ukprn, cancellationToken);

            var sofCodeMcaShortCodeDictionary = await _postcodesDataService.GetMcaShortCodesForSofCodesAsync(DataServiceConstants.ValidDevolvedSourceOfFundingCodes, cancellationToken);

            BusinessRulesValidator validator = new BusinessRulesValidator(contractsForProvider, fundingLineContractTypeMappings, paymentTypes, devolvedContracts, sofCodeMcaShortCodeDictionary, _dateTimeProvider, easJobContext.ReturnPeriod);

            // Business Rule validators
            foreach (EasCsvRecord easRecord in easCsvRecords)
            {
                ValidationResult validate = validator.Validate(easRecord);
                if (!validate.IsValid)
                {
                    businessRulesValidationResults.Add(validate);
                }
            }

            // Cross Record Validation
            var crossRecordValidationResult = new CrossRecordValidator().Validate(easCsvRecords);

            validationResults.AddRange(businessRulesValidationResults);
            if (!crossRecordValidationResult.IsValid)
            {
                validationResults.Add(crossRecordValidationResult);
            }

            var validationErrorList = _validationErrorBuilder.BuildValidationErrors(validationResults, validationErrorReferenceData).ToList();

            return(validationErrorList);
        }
Esempio n. 20
0
        public void FundingLine_02_Have_Error_WhenContractEndDate_IsLessThan_EasRecordDate(string year, string month)
        {
            _contractAllocations = new List <ContractAllocation>()
            {
                new ContractAllocation()
                {
                    FundingStreamPeriodCode = "APPS2021",
                    EndDate = new DateTime(2021, 07, 31)
                }
            };

            var easRecord = new EasCsvRecord()
            {
                AdjustmentType = "adjustment",
                FundingLine    = "FundingLine2021",
                CalendarYear   = year,
                CalendarMonth  = month,
                Value          = "10"
            };

            _validator = new BusinessRulesValidator(_contractAllocations, _fundingLineContractTypeMappings, paymentTypes, null, null, dateTimeProviderMock.Object, 1);
            _validator.ShouldHaveValidationErrorFor(x => x.FundingLine, easRecord).WithErrorCode("FundingLine_02");
        }
        private void ValidateVars()
        {
            var signinRule = new SignInRules();

            CheckRule(BusinessRulesValidator <SignInData> .BuildValidator(signinRule, this));
        }
        /// <summary>
        /// Validates the specified password policy entity.
        /// </summary>
        /// <param name="passwordPolicy">The password policy.</param>
        private IEnumerable<ValidationMessage> ValidatePasswordPolicy(PasswordPolicy passwordPolicy)
        {
            IBusinessRulesValidator validator = new BusinessRulesValidator();
            validator.Add(PasswordPolicyValidator, passwordPolicy);

            return validator.Validate();
        }
        private IEnumerable<ValidationMessage> ValidateUser(User newUser)
        {
            IBusinessRulesValidator businessRuleValidator = new BusinessRulesValidator();
            businessRuleValidator.Add(UserModelValidator, newUser);
            businessRuleValidator.Add(PasswordPolicyRuleValidator, newUser);

            return businessRuleValidator.Validate();
        }