public async Task ProcessVenueFile_AllRecordsValid_SetStatusToProcessedSuccessfully() { // Arrange var blobServiceClient = new Mock <BlobServiceClient>(); blobServiceClient.Setup(mock => mock.GetBlobContainerClient(It.IsAny <string>())).Returns(Mock.Of <BlobContainerClient>()); var fileUploadProcessor = new FileUploadProcessor( SqlQueryDispatcherFactory, blobServiceClient.Object, Clock, new RegionCache(SqlQueryDispatcherFactory), new ExecuteImmediatelyBackgroundWorkScheduler(Fixture.ServiceScopeFactory)); var provider = await TestData.CreateProvider(); var user = await TestData.CreateUser(providerId : provider.ProviderId); var(venueUpload, _) = await TestData.CreateVenueUpload(provider.ProviderId, user, UploadStatus.Created); var uploadRows = DataManagementFileHelper.CreateVenueUploadRows(rowCount: 3).ToArray(); await WithSqlQueryDispatcher(dispatcher => AddPostcodeInfoForRows(dispatcher, uploadRows.ToDataUploadRowCollection())); var stream = DataManagementFileHelper.CreateVenueUploadCsvStream(uploadRows); // Act await fileUploadProcessor.ProcessVenueFile(venueUpload.VenueUploadId, stream); // Assert venueUpload = await WithSqlQueryDispatcher( dispatcher => dispatcher.ExecuteQuery(new GetVenueUpload() { VenueUploadId = venueUpload.VenueUploadId })); using (new AssertionScope()) { venueUpload.UploadStatus.Should().Be(UploadStatus.ProcessedSuccessfully); venueUpload.LastValidated.Should().Be(Clock.UtcNow); venueUpload.ProcessingCompletedOn.Should().Be(Clock.UtcNow); venueUpload.ProcessingStartedOn.Should().NotBeNull(); } }
public async Task ProcessVenueFile_RowHasErrors_SetStatusToProcessedWithErrors() { // Arrange var blobServiceClient = new Mock <BlobServiceClient>(); blobServiceClient.Setup(mock => mock.GetBlobContainerClient(It.IsAny <string>())).Returns(Mock.Of <BlobContainerClient>()); var fileUploadProcessor = new FileUploadProcessor( SqlQueryDispatcherFactory, blobServiceClient.Object, Clock, new RegionCache(SqlQueryDispatcherFactory), new ExecuteImmediatelyBackgroundWorkScheduler(Fixture.ServiceScopeFactory)); var provider = await TestData.CreateProvider(); var user = await TestData.CreateUser(providerId : provider.ProviderId); var(venueUpload, _) = await TestData.CreateVenueUpload(provider.ProviderId, user, UploadStatus.Created); var stream = DataManagementFileHelper.CreateVenueUploadCsvStream( // Empty record will always yield errors new CsvVenueRow()); // Act await fileUploadProcessor.ProcessVenueFile(venueUpload.VenueUploadId, stream); // Assert venueUpload = await WithSqlQueryDispatcher( dispatcher => dispatcher.ExecuteQuery(new GetVenueUpload() { VenueUploadId = venueUpload.VenueUploadId })); using (new AssertionScope()) { venueUpload.UploadStatus.Should().Be(UploadStatus.ProcessedWithErrors); venueUpload.LastValidated.Should().Be(Clock.UtcNow); venueUpload.ProcessingCompletedOn.Should().Be(Clock.UtcNow); venueUpload.ProcessingStartedOn.Should().NotBeNull(); } }