Esempio n. 1
0
        public void ULNRule03CatchesULNsForDatesOlderThan2MonthsAgo()
        {
            var datenow = DateTime.Now;
            var date    = DateTime.Now.AddMonths(-6);

            var monthYearHelperMock = new Mock <IMonthYearHelper>();

            monthYearHelperMock
            .Setup(m => m.GetFirstOfCalendarMonthDateTime(date.Year, date.Month))
            .Returns(date);

            monthYearHelperMock
            .Setup(m => m.GetFirstOfCalendarMonthDateTime(datenow.Year, datenow.Month))
            .Returns(datenow);

            var model = new SupplementaryDataModel
            {
                ReferenceType = "LearnRefNumber",
                ULN           = 9999999999,
                CalendarYear  = date.Year,
                CalendarMonth = date.Month
            };

            var dateNow          = DateTime.Now;
            var dateTimeProvider = new Mock <IDateTimeProvider>();

            dateTimeProvider.Setup(m => m.GetNowUtc()).Returns(dateNow);
            dateTimeProvider.Setup(m => m.ConvertUtcToUk(dateNow)).Returns(dateNow);

            var rule = new ULNRule03(_messageServiceMock.Object, dateTimeProvider.Object, monthYearHelperMock.Object);

            Assert.False(rule.IsValid(model));
        }
        public void CalendarYearCalendarMonthRule02CatchesDatesPriorToContractDate()
        {
            var allocation = new ContractAllocationCacheModel
            {
                StartDate = new DateTime(2018, 01, 01)
            };

            var mapper = new Mock <IFcsCodeMappingHelper>();

            mapper.Setup(
                x => x.GetFcsDeliverableCode(It.IsAny <SupplementaryDataModel>(), It.IsAny <CancellationToken>()))
            .Returns(3);

            var referenceRepo = new Mock <IReferenceDataService>();

            referenceRepo
            .Setup(x => x.GetContractAllocation(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <CancellationToken>(), It.IsAny <int?>()))
            .Returns(allocation);

            var model = new SupplementaryDataModel
            {
                ConRefNumber  = "ESF-2111",
                CalendarMonth = 10,
                CalendarYear  = 2017
            };
            var rule = new CalendarYearCalendarMonthRule02(_messageServiceMock.Object, referenceRepo.Object, mapper.Object);

            Assert.False(rule.IsValid(model));
        }
        public int GetFcsDeliverableCode(SupplementaryDataModel model, CancellationToken cancellationToken)
        {
            var result = 0;

            var deliverableCode = model.DeliverableCode?.Trim();

            var codeMappings = _cache.GetContractDeliverableCodeMapping(new List <string> {
                deliverableCode
            }, cancellationToken);

            var fcsDeliverableCodeString = codeMappings
                                           .Where(cm => cm.ExternalDeliverableCode == deliverableCode)
                                           .Select(cm => cm.FCSDeliverableCode).FirstOrDefault();

            if (string.IsNullOrEmpty(fcsDeliverableCodeString))
            {
                return(result);
            }

            if (int.TryParse(fcsDeliverableCodeString, out var fcsDeliverableCode))
            {
                result = fcsDeliverableCode;
            }
            else
            {
                _logger.LogError($"DeliverableCode not an integer:- {fcsDeliverableCodeString}");
            }

            return(result);
        }
Esempio n. 4
0
        public void LearnAimRef04PassesNoMatchingLarsLearningDelivery()
        {
            var calendarMonth = 5;
            var calendarYear  = 2018;

            var monthYearHelperMock = new Mock <IMonthYearHelper>();

            monthYearHelperMock
            .Setup(m => m.GetFirstOfCalendarMonthDateTime(calendarYear, calendarMonth))
            .Returns(DateTime.Now);

            var suppData = new SupplementaryDataModel
            {
                LearnAimRef   = "Foo",
                CalendarMonth = calendarMonth,
                CalendarYear  = calendarYear
            };

            var refDataServiceMock = new Mock <IReferenceDataService>();

            refDataServiceMock
            .Setup(m => m.GetLarsLearningDelivery(suppData.LearnAimRef))
            .Returns((LarsLearningDeliveryModel)null);

            var rule = new LearnAimRef04(_messageServiceMock.Object, refDataServiceMock.Object, monthYearHelperMock.Object);

            Assert.True(rule.IsValid(suppData));
        }
Esempio n. 5
0
        public void BuildModelFromEntity()
        {
            var model = new SupplementaryDataModel
            {
                ConRefNumber    = "ConRefNumber",
                DeliverableCode = "DeliverableCode",
                CalendarYear    = 2019,
                CalendarMonth   = 1,
                CostType        = "CostType",
                ReferenceType   = "ReferenceType",
                Reference       = "Reference",
                Value           = 0
            };

            var expectedModel = new SupplementaryDataUnitCost
            {
                ConRefNumber    = "ConRefNumber",
                DeliverableCode = "DeliverableCode",
                CalendarYear    = 2019,
                CalendarMonth   = 1,
                CostType        = "CostType",
                ReferenceType   = "ReferenceType",
                Reference       = "Reference",
                Value           = 0
            };

            var referenceDataServiceMock = new Mock <IReferenceDataService>();

            NewService(referenceDataServiceMock.Object).BuildModelFromEntity(model).Should().BeEquivalentTo(expectedModel);
        }
        public void CalendarYearCalendarMonthRule02PassesDatesInTheContractPeriod()
        {
            var allocation = new ContractAllocationCacheModel
            {
                StartDate = new DateTime(2017, 11, 01)
            };

            var mapper = new Mock <IFcsCodeMappingHelper>();

            mapper.Setup(
                x => x.GetFcsDeliverableCode(It.IsAny <SupplementaryDataModel>(), It.IsAny <CancellationToken>()))
            .Returns(3);

            var referenceRepo = new Mock <IReferenceDataCache>();

            referenceRepo
            .Setup(x => x.GetContractAllocation(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <CancellationToken>(), It.IsAny <long?>()))
            .Returns(allocation);

            var model = new SupplementaryDataModel
            {
                ConRefNumber  = "ESF-2111",
                CalendarMonth = 11,
                CalendarYear  = 2017
            };
            var rule = new CalendarYearCalendarMonthRule02(referenceRepo.Object, mapper.Object);

            Assert.True(rule.Execute(model));
        }
Esempio n. 7
0
        public void Duplicate01PassesWhenNoDuplicates()
        {
            var record = new SupplementaryDataModel
            {
                ConRefNumber    = "ESF-2108",
                DeliverableCode = "ST01",
                CalendarYear    = 2018,
                CalendarMonth   = 10,
                CostType        = "Grant",
                ReferenceType   = "LearnRefNumber",
                Reference       = "100000098"
            };

            var records = new List <SupplementaryDataModel>
            {
                record,
                new SupplementaryDataModel
                {
                    ConRefNumber    = "ESF-2108",
                    DeliverableCode = "RQ01",
                    CalendarYear    = 2018,
                    CalendarMonth   = 10,
                    CostType        = "Grant",
                    ReferenceType   = "LearnRefNumber",
                    Reference       = "100000098"
                }
            };

            var rule = new Duplicate01();

            Assert.True(rule.Execute(records, record));
        }
 public bool IsValid(SupplementaryDataModel model)
 {
     return((!model.DeliverableCode.CaseInsensitiveEquals(DeliverableCodeConstants.DeliverableCode_CG01) &&
             !model.DeliverableCode.CaseInsensitiveEquals(DeliverableCodeConstants.DeliverableCode_CG02) &&
             !model.DeliverableCode.CaseInsensitiveEquals(DeliverableCodeConstants.DeliverableCode_SD01) &&
             !model.DeliverableCode.CaseInsensitiveEquals(DeliverableCodeConstants.DeliverableCode_SD02)) ||
            string.IsNullOrEmpty(model.LearnAimRef?.Trim()));
 }
 public bool Execute(SupplementaryDataModel model)
 {
     return(model.ReferenceType != "LearnRefNumber" ||
            (model.ULN ?? 0) == 9999999999 ||
            _referenceDataCache.GetUlnLookup(new List <long?> {
         model.ULN ?? 0
     }, CancellationToken.None).Any(u => u.ULN == model.ULN));
 }
        public bool Execute(SupplementaryDataModel model)
        {
            var staffCostTypes = new List <string> {
                Constants.CostTypeStaffPT, Constants.CostTypeStaffFT
            };

            return(staffCostTypes.Contains(model.CostType) || model.TotalHoursWorked == null);
        }
 public bool IsValid(SupplementaryDataModel model)
 {
     return(model.ReferenceType != ValidationConstants.ReferenceType_LearnRefNumber ||
            (model.ULN ?? 0) == 9999999999 ||
            _referenceDataService.GetUlnLookup(new List <long?> {
         model.ULN ?? 0
     }, CancellationToken.None).Any(u => u == model.ULN));
 }
Esempio n. 12
0
        public bool IsValid(SupplementaryDataModel model)
        {
            var now          = _dateTimeProvider.ConvertUtcToUk(_dateTimeProvider.GetNowUtc());
            var twoMonthsAgo = _monthYearHelper.GetFirstOfCalendarMonthDateTime(now.Year, now.Month).AddMonths(-2);

            return
                ((model.ULN ?? 0) != ValidationConstants.TemporaryUln ||
                 _monthYearHelper.GetFirstOfCalendarMonthDateTime(model.CalendarYear, model.CalendarMonth) > twoMonthsAgo);
        }
Esempio n. 13
0
        public bool IsValid(SupplementaryDataModel model)
        {
            if (model?.SupplementaryDataPanelDate == null)
            {
                return(true);
            }

            return(model.SupplementaryDataPanelDate <= _dateTimeProvider.ConvertUtcToUk(_dateTimeProvider.GetNowUtc()));
        }
Esempio n. 14
0
        public bool IsValid(SupplementaryDataModel model)
        {
            if (model?.SupplementaryDataPanelDate == null)
            {
                return(true);
            }

            return(model.SupplementaryDataPanelDate >= _ruleStartDate);
        }
Esempio n. 15
0
        public void CostTypeRule01CatchesCostTypesNotInValidList()
        {
            var model = new SupplementaryDataModel
            {
                CostType = "I am not valid"
            };
            var rule = new CostTypeRule01(_messageServiceMock.Object);

            Assert.False(rule.IsValid(model));
        }
        public void TestThatCalendarMonthRule01PassesValidMonths()
        {
            var model = new SupplementaryDataModel
            {
                CalendarMonth = 10
            };
            var rule = new CalendarMonthRule01();

            Assert.True(rule.Execute(model));
        }
        public void CalendarYearRule01CatchesYearsOutsideOfTheAllowedRange()
        {
            var model = new SupplementaryDataModel
            {
                CalendarYear = 1998
            };
            var rule = new CalendarYearRule01();

            Assert.False(rule.Execute(model));
        }
Esempio n. 18
0
        public void CostTypeRule01CatchesCostTypesNotInValidList()
        {
            var model = new SupplementaryDataModel
            {
                CostType = "I am not valid"
            };
            var rule = new CostTypeRule01();

            Assert.False(rule.Execute(model));
        }
Esempio n. 19
0
        public void CostTypeRule01PassesValidCostTypes()
        {
            var model = new SupplementaryDataModel
            {
                CostType = "Grant"
            };
            var rule = new CostTypeRule01();

            Assert.True(rule.Execute(model));
        }
Esempio n. 20
0
        public void CostTypeRule01PassesValidCostTypes()
        {
            var model = new SupplementaryDataModel
            {
                CostType = "Grant"
            };
            var rule = new CostTypeRule01(_messageServiceMock.Object);

            Assert.True(rule.IsValid(model));
        }
        public void TestThatCalendarMonthRule01CatchesInvalidMonths()
        {
            var model = new SupplementaryDataModel
            {
                CalendarMonth = 16
            };
            var rule = new CalendarMonthRule01();

            Assert.False(rule.Execute(model));
        }
        public void TestThatCalendarMonthRule01PassesValidMonths()
        {
            var model = new SupplementaryDataModel
            {
                CalendarMonth = 10
            };
            var rule = new CalendarMonthRule01(_messageServiceMock.Object);

            Assert.True(rule.IsValid(model));
        }
        public void CalendarYearRule01PassesYearsInsideOfTheAllowedRange()
        {
            var model = new SupplementaryDataModel
            {
                CalendarYear = 2018
            };
            var rule = new CalendarYearRule01();

            Assert.True(rule.Execute(model));
        }
        public void CalendarYearRule01CatchesYearsOutsideOfTheAllowedRange()
        {
            var model = new SupplementaryDataModel
            {
                CalendarYear = 1998
            };
            var rule = new CalendarYearRule01(_messageServiceMock.Object);

            Assert.False(rule.IsValid(model));
        }
        public void CalendarYearRule01PassesYearsInsideOfTheAllowedRange()
        {
            var model = new SupplementaryDataModel
            {
                CalendarYear = 2020
            };
            var rule = new CalendarYearRule01(_messageServiceMock.Object);

            Assert.True(rule.IsValid(model));
        }
        public void StaffNameRule02PassesValidStaffNames()
        {
            var model = new SupplementaryDataModel
            {
                StaffName = @"Aa0.,;:~!”@#$&’()/+-<=>[]{}^£€"
            };

            var rule = new StaffNameRule02();

            Assert.True(rule.Execute(model));
        }
        public void StaffNameRule02CatchesRegexViolations()
        {
            var model = new SupplementaryDataModel
            {
                StaffName = "|~"
            };

            var rule = new StaffNameRule02();

            Assert.False(rule.Execute(model));
        }
        public void SupplementaryDataPanelDate02PassesSupplementaryDataPanelDateAfterStartDate()
        {
            var suppData = new SupplementaryDataModel
            {
                SupplementaryDataPanelDate = new DateTime(2019, 4, 1)
            };

            var rule = new SupplementaryDataPanelDate02(_messageServiceMock.Object);

            Assert.True(rule.IsValid(suppData));
        }
        public void SupplementaryDataPanelDate02FailsDateBeforeStartDate()
        {
            var suppData = new SupplementaryDataModel
            {
                SupplementaryDataPanelDate = new DateTime(2019, 3, 31)
            };

            var rule = new SupplementaryDataPanelDate02(_messageServiceMock.Object);

            Assert.False(rule.IsValid(suppData));
        }
        public void SupplementaryDataPanelDate02PassesNoSupplementaryDataPanelDate()
        {
            var suppData = new SupplementaryDataModel
            {
                SupplementaryDataPanelDate = null
            };

            var rule = new SupplementaryDataPanelDate02(_messageServiceMock.Object);

            Assert.True(rule.IsValid(suppData));
        }