public IExcelMapper Build(IWorkbook workbook, MapperSettings settings)
        {
            if (workbook == null)
            {
                throw new ArgumentNullException(nameof(workbook));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            IConverterProvider      converterProvider      = GetDefaultConvertersProvider();
            IPropertyNameConvention propertyNameConvention = GetDefaultPropertyNamingConventions();

            if (settings.Convention.AnyValue())
            {
                propertyNameConvention = settings.Convention;
            }

            if (settings.ConverterProvider.AnyValue())
            {
                converterProvider = settings.ConverterProvider;
            }

            var propertiesExtractor   = new TypeInfoProvider();
            var propertyInfoExtractor = new PropertyInfoExtractor();
            var propertiesMapFactory  = new ExcelPropertyMapFactory(propertiesExtractor, propertyInfoExtractor,
                                                                    propertyNameConvention, _loggerFactory.CreateLogger <ExcelPropertyMapFactory>());

            var typeConverter = new CellValueConverter(converterProvider);
            var modelFactory  = new ModelBuilder(propertyInfoExtractor);

            return(new ExcelMapper(workbook, propertiesMapFactory, typeConverter, modelFactory,
                                   _loggerFactory.CreateLogger <ExcelMapper>()));
        }
 public ExcelPropertyMapFactoryTests(DatafileFixture fixture)
 {
     _fixture = fixture;
     _sut     = new ExcelPropertyMapFactory(new TypeInfoProvider(), new PropertyInfoExtractor(),
                                            new PropertyNamingConventionsBucket(new List <IPropertyNameConvention>(),
                                                                                Substitute.For <ILogger <PropertyNamingConventionsBucket> >()),
                                            Substitute.For <ILogger <ExcelPropertyMapFactory> >());
 }