public void VerifyDataMatchModelBuilder( int ilrukPrn, int dasUkPrn, string learnRefNumber, long ilrUln, long dasUln, int ilrStdCode, int dasStdCode, int ilrFworkCode, int dasFworkCode, int ilrProgType, int dasProgType, int ilrPwayCode, int dasPwayCode, int ruleId, string expectedIlrValue = "", string expectedApprenticeshipValue = "") { var dataMatchModelBuilder = new ExternalDataMatchMonthEndModelBuilder(Mock.Of <IDataLockValidationMessageService>(), Mock.Of <ILogger>()); var dataMatchILRInfo = BuildILRModelForDataMatchReportBuilderTests(ilrukPrn, learnRefNumber, ilrUln, "50117889", 1, ilrFworkCode, ilrProgType, ilrPwayCode, ilrStdCode, "ACT", "1", new DateTime(2019, 10, 10)); var dataMatchRulebaseInfo = BuildILRRulebaseModelForDataMatchReportBuilderTests(ilrukPrn, learnRefNumber, 1); var dataLockValidationErrorInfo = BuildDataLockValidationErrorInfoForDataMatchReportBuildTests(dasUkPrn, learnRefNumber, 1, dasUln, ruleId, 12345); var dataMatchDasApprenticeshiPriceInfo = BuildDasApprenticeshipInfoForDataMatchReportBuilderTests(ilrukPrn, 9900000111, null, null, dasFworkCode, dasProgType, dasPwayCode, dasStdCode, 100, "TestLegalEntityName"); var result = dataMatchModelBuilder.BuildExternalModels(dataMatchILRInfo, dataMatchRulebaseInfo, dataLockValidationErrorInfo, dataMatchDasApprenticeshiPriceInfo, -1); result.Should().NotBeNullOrEmpty(); result.Count().Should().Be(1); result.First().RuleName.Should().Be("DLOCK_" + ruleId.ToString("00")); result.First().ILRValue.Should().Be(expectedIlrValue); result.First().ApprenticeshipServiceValue.Should().Be(expectedApprenticeshipValue); }
public async Task TestDataMatchReportGeneration() { string csv = string.Empty; DateTime dateTime = DateTime.UtcNow; string filename = $"10033670_1_Apprenticeship Data Match Report {dateTime:yyyyMMdd-HHmmss}.csv"; int ukPrn = 10033670; Mock <IReportServiceContext> reportServiceContextMock = new Mock <IReportServiceContext>(); reportServiceContextMock.SetupGet(x => x.JobId).Returns(1); reportServiceContextMock.SetupGet(x => x.SubmissionDateTimeUtc).Returns(DateTime.UtcNow); reportServiceContextMock.SetupGet(x => x.Ukprn).Returns(10033670); reportServiceContextMock.SetupGet(x => x.IsIlrSubmission).Returns(true); Mock <ILogger> logger = new Mock <ILogger>(); Mock <IDateTimeProvider> dateTimeProviderMock = new Mock <IDateTimeProvider>(); Mock <IStreamableKeyValuePersistenceService> storage = new Mock <IStreamableKeyValuePersistenceService>(); Mock <IDASPaymentsProviderService> dasPaymentProviderMock = new Mock <IDASPaymentsProviderService>(); Mock <IILRProviderService> iIlrProviderService = new Mock <IILRProviderService>(); IExternalDataMatchModelBuilder dataMatchModelBuilder = new ExternalDataMatchMonthEndModelBuilder(new DataLockValidationMessageService(), logger.Object); storage.Setup(x => x.SaveAsync(filename, It.IsAny <string>(), It.IsAny <CancellationToken>())) .Callback <string, string, CancellationToken>((key, value, ct) => csv = value) .Returns(Task.CompletedTask); var ilrModelForDataMatchReport = BuildILRModelForDataMatchReport(ukPrn); var dataMatchRulebaseInfo = BuildFm36Model(ukPrn); var dasApprenticeshipInfoForDataMatchReport = GetDasApprenticeshipInfoForDataMatchReport(ukPrn); var dataLockValidationErrorInfoForDataMatchReport = GetDataLockValidationErrorInfoForDataMatchReport(ukPrn); storage.Setup(x => x.ContainsAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())).ReturnsAsync(true); storage.Setup(x => x.SaveAsync(filename, It.IsAny <string>(), It.IsAny <CancellationToken>())) .Callback <string, string, CancellationToken>((key, value, ct) => csv = value) .Returns(Task.CompletedTask); iIlrProviderService .Setup(x => x.GetFM36DataForDataMatchReportAsync(It.IsAny <int>(), It.IsAny <CancellationToken>())) .ReturnsAsync(dataMatchRulebaseInfo); iIlrProviderService .Setup(x => x.GetILRInfoForDataMatchReportAsync(It.IsAny <int>(), It.IsAny <List <long> >(), It.IsAny <CancellationToken>())) .ReturnsAsync(ilrModelForDataMatchReport); dasPaymentProviderMock.Setup(x => x.GetDasApprenticeshipInfoForDataMatchReport(It.IsAny <int>(), It.IsAny <CancellationToken>())) .ReturnsAsync(dasApprenticeshipInfoForDataMatchReport); dasPaymentProviderMock.Setup(x => x.GetDataLockValidationErrorInfoForUkprnAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(dataLockValidationErrorInfoForDataMatchReport); dateTimeProviderMock.Setup(x => x.GetNowUtc()).Returns(dateTime); dateTimeProviderMock.Setup(x => x.ConvertUtcToUk(It.IsAny <DateTime>())).Returns(dateTime); var report = new ExternalDataMatchReport( dasPaymentProviderMock.Object, iIlrProviderService.Object, storage.Object, dataMatchModelBuilder, dateTimeProviderMock.Object, new ExternalDataMatchModelComparer(), logger.Object); await report.GenerateReport(reportServiceContextMock.Object, null, CancellationToken.None); csv.Should().NotBeNullOrEmpty(); File.WriteAllText(filename, csv); IEnumerable <DataMatchModel> result; TestCsvHelper.CheckCsv(csv, new CsvEntry(new ExternalDataMatchMapper(), 1)); using (var reader = new StreamReader(filename)) { using (var csvReader = new CsvReader(reader)) { csvReader.Configuration.RegisterClassMap <ExternalDataMatchMapper>(); result = csvReader.GetRecords <DataMatchModel>().ToList(); } } result.Should().NotBeNullOrEmpty(); result.Count().Should().Be(1); }