public async Task FileMatchesSchema_HeaderHasMissingColumn_ReturnsInvalidHeaderResult() { // Arrange var fileUploadProcessor = new FileUploadProcessor( SqlQueryDispatcherFactory, Mock.Of <BlobServiceClient>(), Clock, new RegionCache(SqlQueryDispatcherFactory), new ExecuteImmediatelyBackgroundWorkScheduler(Fixture.ServiceScopeFactory)); var stream = DataManagementFileHelper.CreateCsvStream(csvWriter => { // Miss out VENUE_NAME, POSTCODE csvWriter.WriteField("YOUR_VENUE_REFERENCE"); csvWriter.WriteField("ADDRESS_LINE_1"); csvWriter.WriteField("ADDRESS_LINE_2"); csvWriter.WriteField("TOWN_OR_CITY"); csvWriter.WriteField("COUNTY"); csvWriter.WriteField("EMAIL"); csvWriter.WriteField("PHONE"); csvWriter.WriteField("WEBSITE"); csvWriter.NextRecord(); }); // Act var(result, missingHeaders) = await fileUploadProcessor.FileMatchesSchema <CsvVenueRow>(stream); // Assert result.Should().Be(FileMatchesSchemaResult.InvalidHeader); missingHeaders.Should().BeEquivalentTo(new[] { "VENUE_NAME", "POSTCODE" }); }
[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); }