[InlineData(1)] // Less than valid row //[InlineData(99] // More than valid row - we don't have a way of checking this currently public async Task FileMatchesSchema_RowHasIncorrectColumnCount_ReturnsInvalidRows(int columnCount) { // Arrange var fileUploadProcessor = new FileUploadProcessor( SqlQueryDispatcherFactory, Mock.Of <BlobServiceClient>(), Clock, new RegionCache(SqlQueryDispatcherFactory), new ExecuteImmediatelyBackgroundWorkScheduler(Fixture.ServiceScopeFactory)); var stream = DataManagementFileHelper.CreateVenueUploadCsvStream(csvWriter => { for (int i = 0; i < columnCount; i++) { csvWriter.WriteField("value"); } csvWriter.NextRecord(); }); // Act var(result, missingHeaders) = await fileUploadProcessor.FileMatchesSchema <CsvVenueRow>(stream); // Assert result.Should().Be(FileMatchesSchemaResult.InvalidRows); }
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(); } }