public static ImportRun RunTest(EntityType entityType, string fileName, ImportFormat importFormat, string sheetName = null)
        {
            string fileToken;

            using (Stream stream = SheetTestHelper.GetStream(fileName))
            {
                fileToken = FileRepositoryHelper.AddTemporaryFile(stream);
            }


            EntityType   type         = entityType;
            ImportConfig importConfig = CreateImportConfig(type, importFormat, sheetName);

            ImportRun importRun = CreateImportRun(importConfig, fileToken);

            ISpreadsheetInspector inspector = Factory.Current.Resolve <ISpreadsheetInspector>( );
            SpreadsheetInfo       info      = inspector.GetSpreadsheetInfo(fileToken, importFormat);
            SampleTable           sample    = inspector.GetSampleTable(fileToken, importFormat, sheetName, 1, 2, null);

            AddAllFields(importConfig, sample);

            // Run import
            IImportRunWorker worker = Factory.Current.Resolve <IImportRunWorker>( );

            worker.StartImport(importRun.Id);

            return(importRun);
        }
        public HttpResponseMessage <SpreadsheetInfo> GetSpreadsheetInfo([FromUri] FileInfo fileInfo, [FromUri] string sheet)
        {
            if (fileInfo == null)
            {
                throw new WebArgumentNullException(nameof(fileInfo));
            }

            var errorResult = new SpreadsheetInfo( );

            Interface.SpreadsheetInfo result;
            Interface.SampleTable     sampleTable;
            string initialSheetId = null;

            try
            {
                result = _spreadsheetInspector.GetSpreadsheetInfo(fileInfo.FileId, GetFileFormat(fileInfo.FileFormat));

                if (result == null)
                {
                    return(new HttpResponseMessage <SpreadsheetInfo>(HttpStatusCode.NotFound));
                }

                if (result.SheetCollection != null)
                {
                    if (sheet != null)
                    {
                        initialSheetId = sheet;
                    }
                    else if (result.SheetCollection != null && result.SheetCollection.Count > 0)
                    {
                        // Assume a default
                        initialSheetId = result.SheetCollection [0].SheetId;
                    }
                }

                sampleTable = _spreadsheetInspector.GetSampleTable(fileInfo.FileId, GetFileFormat(fileInfo.FileFormat), initialSheetId, 1, 2, null);
            }
            catch (FileFormatException ex)
            {
                errorResult.ErrorMessage = ex.Message;
                EventLog.Application.WriteError("GetSpreadsheetInfo {0}", ex.Message);
                return(new HttpResponseMessage <SpreadsheetInfo>(errorResult, HttpStatusCode.UnsupportedMediaType));
            }
            SpreadsheetInfo packedSpreadsheetInfo = PackSpreadsheetInfoResponse(result);

            if (sampleTable != null)
            {
                packedSpreadsheetInfo.InitialSampleTable = PackSampleTable(sampleTable);
                packedSpreadsheetInfo.InitialSheetId     = initialSheetId;
            }

            return(new HttpResponseMessage <SpreadsheetInfo>(packedSpreadsheetInfo, HttpStatusCode.OK));
        }