public async Task Then_The_Standards_Csv_File_Is_Extracted_From_The_Archive( string filePath, string content, string newFilePath, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <IImportAuditRepository> repository, [Frozen] Mock <IZipArchiveHelper> zipHelper, LarsImportService larsImportService) { //Arrange service.Setup(x => x.GetFileStream(newFilePath)) .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes(content))); pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(newFilePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync((ImportAudit)null); //Act await larsImportService.ImportDataIntoStaging(); //Assert zipHelper.Verify(x => x.ExtractModelFromCsvFileZipStream <StandardCsv>(It.IsAny <Stream>(), Constants.LarsStandardsFileName), Times.Once); }
public async Task Then_The_Current_Lars_Import_Data_Is_Deleted( string filePath, string content, string newFilePath, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <ILarsStandardImportRepository> larsStandardImportRepository, [Frozen] Mock <IApprenticeshipFundingImportRepository> apprenticeshipFundingImportRepository, [Frozen] Mock <ISectorSubjectAreaTier2ImportRepository> sectorSubjectAreaTier2ImportRepository, [Frozen] Mock <IImportAuditRepository> repository, LarsImportService larsImportService) { //Arrange service.Setup(x => x.GetFileStream(newFilePath)) .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes(content))); pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(newFilePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync((ImportAudit)null); //Act await larsImportService.ImportDataIntoStaging(); //Assert larsStandardImportRepository.Verify(x => x.DeleteAll(), Times.Once); apprenticeshipFundingImportRepository.Verify(x => x.DeleteAll(), Times.Once); sectorSubjectAreaTier2ImportRepository.Verify(x => x.DeleteAll(), Times.Once); }
public async Task Then_The_Download_Path_Is_Parsed_From_The_Url_And_The_Current_File_Is_Checked_Against_The_Existing_And_If_Same_Then_No_Download( string filePath, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <IImportAuditRepository> repository, [Frozen] Mock <ILarsStandardImportRepository> larsStandardImportRepository, [Frozen] Mock <IApprenticeshipFundingImportRepository> apprenticeshipFundingImportRepository, [Frozen] Mock <ILarsStandardRepository> larsStandardRepository, [Frozen] Mock <IApprenticeshipFundingRepository> apprenticeshipFundingRepository, [Frozen] Mock <ISectorSubjectAreaTier2Repository> sectorSubjectAreaRepository, [Frozen] Mock <ISectorSubjectAreaTier2ImportRepository> sectorSubjectAreaImportRepository, LarsImportService larsImportService) { //Arrange pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(filePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync(new ImportAudit(DateTime.Now, 100, ImportType.LarsImport, filePath)); //Act await larsImportService.ImportDataIntoStaging(); //Assert pageParser.Verify(x => x.GetCurrentLarsDataDownloadFilePath(), Times.Once); service.Verify(x => x.GetFileStream(It.IsAny <string>()), Times.Never); larsStandardImportRepository.Verify(x => x.DeleteAll(), Times.Never); apprenticeshipFundingImportRepository.Verify(x => x.DeleteAll(), Times.Never); sectorSubjectAreaImportRepository.Verify(x => x.DeleteAll(), Times.Never); larsStandardRepository.Verify(x => x.DeleteAll(), Times.Never); apprenticeshipFundingRepository.Verify(x => x.DeleteAll(), Times.Never); sectorSubjectAreaRepository.Verify(x => x.DeleteAll(), Times.Never); }
public async Task Then_An_Audit_Record_Is_Created( DateTime importStartTime, string filePath, List <LarsStandardImport> larsStandardImports, List <StandardImport> standards, List <ApprenticeshipFundingImport> apprenticeshipFundingImports, List <SectorSubjectAreaTier2Import> sectorSubjectAreaTier2Imports, [Frozen] Mock <IImportAuditRepository> importAuditRepository, [Frozen] Mock <ILarsStandardImportRepository> larsStandardImportRepository, [Frozen] Mock <IApprenticeshipFundingImportRepository> apprenticeshipFundingImportRepository, [Frozen] Mock <ISectorSubjectAreaTier2ImportRepository> sectorSubjectAreaTier2ImportRepository, [Frozen] Mock <IStandardImportRepository> standardImportRepository, LarsImportService larsImportService) { standards.ForEach(s => s.LarsCode = 1); apprenticeshipFundingImports.ForEach(i => i.LarsCode = 1); larsStandardImportRepository.Setup(x => x.GetAll()).ReturnsAsync(larsStandardImports); apprenticeshipFundingImportRepository.Setup(x => x.GetAll()).ReturnsAsync(apprenticeshipFundingImports); sectorSubjectAreaTier2ImportRepository.Setup(x => x.GetAll()).ReturnsAsync(sectorSubjectAreaTier2Imports); standardImportRepository.Setup(x => x.GetAll()).ReturnsAsync(standards); //Act await larsImportService.LoadDataFromStaging(importStartTime, filePath); //Assert var totalRecords = larsStandardImports.Count + (apprenticeshipFundingImports.Count * standards.Count) + sectorSubjectAreaTier2Imports.Count; importAuditRepository.Verify(x => x .Insert(It.Is <ImportAudit>(c => c.ImportType.Equals(ImportType.LarsImport) && c.FileName.Equals(filePath) && c.RowsImported.Equals(totalRecords))), Times.Once); }
public async Task Then_The_Standard_Data_Is_Loaded_Into_The_Import_Repository( string filePath, string content, string newFilePath, ApprenticeshipFundingCsv frameWorkCsv, List <StandardCsv> standardCsv, List <ApprenticeshipFundingCsv> apprenticeFundingCsv, SectorSubjectAreaTier2Csv sectorSubjectAreaTier2Csv1, SectorSubjectAreaTier2Csv sectorSubjectAreaTier2Csv2, SectorSubjectAreaTier2Csv sectorSubjectAreaTier2Csv3, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <ILarsStandardImportRepository> larsStandardImportRepository, [Frozen] Mock <IApprenticeshipFundingImportRepository> apprenticeshipFundingImportRepository, [Frozen] Mock <ISectorSubjectAreaTier2ImportRepository> sectorSubjectAreaTier2ImportRepository, [Frozen] Mock <IImportAuditRepository> repository, [Frozen] Mock <IZipArchiveHelper> zipHelper, LarsImportService larsImportService) { //Arrange apprenticeFundingCsv = apprenticeFundingCsv.Select(c => { c.ApprenticeshipType = "STD"; return(c); }).ToList(); frameWorkCsv.ApprenticeshipType = "FRMK"; apprenticeFundingCsv.Add(frameWorkCsv); service.Setup(x => x.GetFileStream(newFilePath)) .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes(content))); pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(newFilePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync((ImportAudit)null); zipHelper.Setup(x => x.ExtractModelFromCsvFileZipStream <StandardCsv>(It.IsAny <Stream>(), Constants.LarsStandardsFileName)) .Returns(standardCsv); zipHelper.Setup(x => x.ExtractModelFromCsvFileZipStream <ApprenticeshipFundingCsv>(It.IsAny <Stream>(), Constants.LarsApprenticeshipFundingFileName)) .Returns(apprenticeFundingCsv); zipHelper.Setup(x => x.ExtractModelFromCsvFileZipStream <SectorSubjectAreaTier2Csv>(It.IsAny <Stream>(), Constants.LarsSectorSubjectAreaTier2FileName)) .Returns(new List <SectorSubjectAreaTier2Csv> { sectorSubjectAreaTier2Csv1, sectorSubjectAreaTier2Csv2, sectorSubjectAreaTier2Csv3 }); //Act await larsImportService.ImportDataIntoStaging(); //Assert larsStandardImportRepository.Verify(x => x.InsertMany(It.Is <List <LarsStandardImport> >(c => c.Count.Equals(standardCsv.Count))), Times.Once); apprenticeshipFundingImportRepository.Verify(x => x.InsertMany(It.Is <List <ApprenticeshipFundingImport> >(c => c.Count.Equals(apprenticeFundingCsv.Count - 1))), Times.Once); sectorSubjectAreaTier2ImportRepository.Verify(x => x.InsertMany(It.Is <List <SectorSubjectAreaTier2Import> >(c => c.Count.Equals(3))), Times.Once); }
public async Task Then_The_FundingData_Is_Added_From_The_Import_Repository_Along_With_StandardUId( DateTime importStartTime, string filePath, [Frozen] Mock <IStandardImportRepository> standardImportRepository, [Frozen] Mock <IApprenticeshipFundingImportRepository> apprenticeshipFundingImportRepository, [Frozen] Mock <IApprenticeshipFundingRepository> apprenticeshipFundingRepository, LarsImportService larsImportService) { //Arrange var standardImports = new List <StandardImport> { new StandardImport { LarsCode = 1, StandardUId = "ST0001_1.0" }, new StandardImport { LarsCode = 2, StandardUId = "ST0002_1.0" }, new StandardImport { LarsCode = 2, StandardUId = "ST0002_1.1" } }; standardImportRepository.Setup(s => s.GetAll()).ReturnsAsync(standardImports); var apprenticeshipFundingImports = new List <ApprenticeshipFundingImport> { new ApprenticeshipFundingImport { LarsCode = 1, Id = Guid.NewGuid() }, new ApprenticeshipFundingImport { LarsCode = 1, Id = Guid.NewGuid() }, new ApprenticeshipFundingImport { LarsCode = 2, Id = Guid.NewGuid() }, new ApprenticeshipFundingImport { LarsCode = 2, Id = Guid.NewGuid() } }; apprenticeshipFundingImportRepository.Setup(x => x.GetAll()).ReturnsAsync(apprenticeshipFundingImports); //Act await larsImportService.LoadDataFromStaging(importStartTime, filePath); //Assert standardImportRepository.Verify(x => x.GetAll(), Times.Once); apprenticeshipFundingRepository.Verify(x => x.InsertMany(It.Is <List <ApprenticeshipFunding> >(c => c.Count.Equals(6))), Times.Once); apprenticeshipFundingRepository.Verify(x => x.InsertMany(It.Is <List <ApprenticeshipFunding> >(c => c.Where(s => s.StandardUId == "ST0001_1.0").Count().Equals(2))), Times.Once); apprenticeshipFundingRepository.Verify(x => x.InsertMany(It.Is <List <ApprenticeshipFunding> >(c => c.Where(s => s.StandardUId == "ST0002_1.0").Count().Equals(2))), Times.Once); apprenticeshipFundingRepository.Verify(x => x.InsertMany(It.Is <List <ApprenticeshipFunding> >(c => c.Where(s => s.StandardUId == "ST0002_1.1").Count().Equals(2))), Times.Once); }
public async Task Then_The_Data_Is_Deleted_From_The_Repository( DateTime importStartTime, string filePath, [Frozen] Mock <ILarsStandardRepository> larsStandardRepository, [Frozen] Mock <IApprenticeshipFundingRepository> apprenticeshipFundingRepository, [Frozen] Mock <ISectorSubjectAreaTier2Repository> sectorSubjectAreaTier2Repository, LarsImportService larsImportService) { //Act await larsImportService.LoadDataFromStaging(importStartTime, filePath); //Assert larsStandardRepository.Verify(x => x.DeleteAll(), Times.Once); apprenticeshipFundingRepository.Verify(x => x.DeleteAll(), Times.Once); sectorSubjectAreaTier2Repository.Verify(x => x.DeleteAll(), Times.Once); }
public async Task Then_The_Data_Is_Downloaded_From_The_Api_If_No_Previous_File_Returned( string filePath, string content, string newFilePath, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <IImportAuditRepository> repository, LarsImportService larsImportService) { //Arrange service.Setup(x => x.GetFileStream(newFilePath)) .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes(content))); pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(newFilePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync((ImportAudit)null); //Act await larsImportService.ImportDataIntoStaging(); //Assert service.Verify(x => x.GetFileStream(newFilePath), Times.Once); }
public async Task Then_The_Download_Path_Is_Parsed_From_The_Url_And_The_Current_File_Is_Checked_Against_The_Existing_And_If_Same_Then_Download( string filePath, string content, [Frozen] Mock <ILarsPageParser> pageParser, [Frozen] Mock <IDataDownloadService> service, [Frozen] Mock <IImportAuditRepository> repository, LarsImportService larsImportService) { //Arrange service.Setup(x => x.GetFileStream(filePath)) .ReturnsAsync(new MemoryStream(Encoding.UTF8.GetBytes(content))); pageParser.Setup(x => x.GetCurrentLarsDataDownloadFilePath()).ReturnsAsync(filePath); repository.Setup(x => x.GetLastImportByType(ImportType.LarsImport)) .ReturnsAsync(new ImportAudit(DateTime.Now, 100, ImportType.LarsImport, filePath)); //Act await larsImportService.ImportDataIntoStaging(); //Assert pageParser.Verify(x => x.GetCurrentLarsDataDownloadFilePath(), Times.Once); service.Verify(x => x.GetFileStream(filePath), Times.Once); }
public async Task Then_The_Data_Is_Added_From_The_Import_Repositories( DateTime importStartTime, string filePath, List <LarsStandardImport> larsStandardImports, List <SectorSubjectAreaTier2Import> sectorSubjectAreaTier2Imports, [Frozen] Mock <ILarsStandardImportRepository> larsStandardImportRepository, [Frozen] Mock <ISectorSubjectAreaTier2ImportRepository> sectorSubjectAreaTier2ImportRepository, [Frozen] Mock <ILarsStandardRepository> larsStandardRepository, [Frozen] Mock <IApprenticeshipFundingRepository> apprenticeshipFundingRepository, [Frozen] Mock <ISectorSubjectAreaTier2Repository> sectorSubjectAreaTier2Repository, LarsImportService larsImportService) { //Arrange larsStandardImportRepository.Setup(x => x.GetAll()).ReturnsAsync(larsStandardImports); sectorSubjectAreaTier2ImportRepository.Setup(x => x.GetAll()).ReturnsAsync(sectorSubjectAreaTier2Imports); //Act await larsImportService.LoadDataFromStaging(importStartTime, filePath); //Assert larsStandardRepository.Verify(x => x.InsertMany(It.Is <List <LarsStandard> >(c => c.Count.Equals(larsStandardImports.Count))), Times.Once); sectorSubjectAreaTier2Repository.Verify(x => x.InsertMany(It.Is <List <SectorSubjectAreaTier2> >(c => c.Count.Equals(sectorSubjectAreaTier2Imports.Count))), Times.Once); }