public void FormatExcelSheetBasedOnErrors_GivenSomeMissingHeaders_ShouldFillInWorksheetWithTheErrors()
        {
            using (var excelPackage = new ExcelPackage())
            {
                // Arrange
                FieldDefinition fieldDefinitionParentRid = new FieldDefinition
                {
                    Description         = "The Rid of the parent provider (from The Store)",
                    Id                  = "1100002",
                    IdentifierFieldType = null,
                    MatchExpression     = null,
                    Maximum             = null,
                    Minimum             = null,
                    Name                = "Parent Rid",
                    Required            = false,
                    Type                = FieldType.String
                };

                FieldDefinition fieldDefinitionRid = new FieldDefinition
                {
                    Description         = "Rid is the unique reference from The Store",
                    Id                  = "1100001",
                    IdentifierFieldType = null,
                    MatchExpression     = null,
                    Maximum             = null,
                    Minimum             = null,
                    Name                = "Rid",
                    Required            = false,
                    Type                = FieldType.String
                };

                List <HeaderValidationResult> headerValidationResultsToReturn = new List <HeaderValidationResult>
                {
                    new HeaderValidationResult(fieldDefinitionParentRid),
                    new HeaderValidationResult(fieldDefinitionRid)
                };

                IDatasetUploadValidationResult mockUploadValidationResult = Substitute.For <IDatasetUploadValidationResult>();
                mockUploadValidationResult.HeaderValitionFailures.Returns(headerValidationResultsToReturn);
                mockUploadValidationResult.FieldValidationFailures.Returns(new List <FieldValidationResult>());

                // Act
                ExcelHeaderErrorFormatter formatterUnderTest = new ExcelHeaderErrorFormatter(excelPackage);
                formatterUnderTest.FormatExcelSheetBasedOnErrors(mockUploadValidationResult);

                // Assert
                ExcelWorksheet errorsWorkSheet = excelPackage.Workbook.Worksheets["Errors"];
                errorsWorkSheet.Should().NotBeNull();

                errorsWorkSheet.Cells[10, 1].Value.Should().BeEquivalentTo(fieldDefinitionParentRid.Name);
                errorsWorkSheet.Cells[11, 1].Value.Should().BeEquivalentTo(fieldDefinitionRid.Name);

                for (int rowIndex = 12; rowIndex < 22; rowIndex++)
                {
                    errorsWorkSheet.Cells[rowIndex, 1].Value.Should().BeNull();
                }
            }
        }
        public void FormatExcelSheetBasedOnErrors_GivenNoErrorInResult_ShouldNotCreateAdditionalWorksheet()
        {
            using (var excelPackage = new ExcelPackage())
            {
                // Arrange
                IDatasetUploadValidationResult mockUploadValidationResult = Substitute.For <IDatasetUploadValidationResult>();
                mockUploadValidationResult.HeaderValitionFailures.Returns(new List <HeaderValidationResult>());
                mockUploadValidationResult.FieldValidationFailures.Returns(new List <FieldValidationResult>());
                mockUploadValidationResult.IsValid().Returns(true);

                // Act
                ExcelHeaderErrorFormatter formatterUnderTest = new ExcelHeaderErrorFormatter(excelPackage);
                formatterUnderTest.FormatExcelSheetBasedOnErrors(mockUploadValidationResult);

                // Assert
                ExcelWorksheet errorsWorkSheet = excelPackage.Workbook.Worksheets["Errors"];
                errorsWorkSheet.Should().BeNull();
            }
        }