Beispiel #1
0
        public CsvAssetReaderReturnModel ReadCSVFile(ProcessCsvFileRequestModel requestModel)
        {
            var modelToReturn = new CsvAssetReaderReturnModel();

            var assetList = new List <AssetModel>();

            var batches = new List <BatchEntity>();

            string[] lines = System.IO.File.ReadAllLines(requestModel.Path);
            lines = lines.Skip(1).ToArray();

            foreach (var line in lines)
            {
                var asset = GetAssetFromLine(line);
                if (asset == null)
                {
                    throw new CsvFileException("Could not read the file");
                }
                assetList.Add(asset);
            }

            modelToReturn.Assets = assetList;
            var listOfBatches = lines.ToList().Split(requestModel.BatchSize);

            foreach (var batch in listOfBatches)
            {
                batches.Add(new BatchEntity
                {
                    Content = string.Join(Environment.NewLine, batch)
                });
            }
            modelToReturn.Batches = batches;
            return(modelToReturn);
        }
Beispiel #2
0
        public async Task When_ProcessCsvFileIsCalledWithProperCsvFile_Expect_InsertAssetsAndInsertBatchIsCalled()
        {
            var csvAssetReaderReturnValue = new CsvAssetReaderReturnModel()
            {
                Assets = new List <AssetModel>()
                {
                    new AssetModel {
                        Id        = 1,
                        TimeStamp = DateTime.Now
                    }
                },
                Batches = new List <BatchEntity>()
                {
                    new BatchEntity {
                        Content = "123"
                    }
                }
            };

            var convertedAssetEntity = new AssetEntity
            {
                AssetId = 1
            };

            csvAssetReader.Setup(s => s.ReadCSVFile(It.IsAny <ProcessCsvFileRequestModel>())).Returns(csvAssetReaderReturnValue);

            assetConverter.Setup(s => s.ConvertToAssetEntity(It.IsAny <AssetModel>())).Returns(convertedAssetEntity);

            var controller = new AssetController(assetControllerLogger, assetRepository.Object, csvAssetReader.Object, assetConverter.Object, assetSearchPredicateConverter.Object, batchRepository.Object);

            await controller.ProcessCsvFile(new ProcessCsvFileRequestModel
            {
                BatchSize = 10,
                Path      = "Test"
            });

            assetRepository.Verify(s => s.InsertAssets(It.IsAny <IEnumerable <AssetEntity> >()), Times.Once);

            batchRepository.Verify(s => s.InsertBatch(It.IsAny <BatchEntity>()), Times.Once);
        }