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); }
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)); }
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)); }
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)); }
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); }
public bool IsValid(SupplementaryDataModel model) { if (model?.SupplementaryDataPanelDate == null) { return(true); } return(model.SupplementaryDataPanelDate <= _dateTimeProvider.ConvertUtcToUk(_dateTimeProvider.GetNowUtc())); }
public bool IsValid(SupplementaryDataModel model) { if (model?.SupplementaryDataPanelDate == null) { return(true); } return(model.SupplementaryDataPanelDate >= _ruleStartDate); }
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)); }
public void CostTypeRule01CatchesCostTypesNotInValidList() { var model = new SupplementaryDataModel { CostType = "I am not valid" }; var rule = new CostTypeRule01(); Assert.False(rule.Execute(model)); }
public void CostTypeRule01PassesValidCostTypes() { var model = new SupplementaryDataModel { CostType = "Grant" }; var rule = new CostTypeRule01(); Assert.True(rule.Execute(model)); }
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)); }