public List<LoadDBStatus> DoLoad() { MongoEntityRepositoryBase<ProductBasicData> mongoRepository = new MongoEntityRepositoryBase<ProductBasicData>(m_db); List<LoadDBStatus> returnValue = new List<LoadDBStatus>(); log.Info("[DoLoad] started."); foreach (var file in m_filesForLoadingToDB) { LoadDBStatus loadStat = new LoadDBStatus(); loadStat.File = file; try { string html = File.ReadAllText(file); ProductBasicDataFetcher fetcher = new ProductBasicDataFetcher(html); var products = fetcher.FetchProducts(); foreach (var item in products) { item.Category = file; var producExistInDB = mongoRepository.GetSingle(item.Barcode); if (producExistInDB == null) { log.DebugFormat("Inserts new product to DB ={0}.", item); mongoRepository.Add(item); } else { log.DebugFormat("Updates {0}.", item); mongoRepository.Update(item); } } } catch (Exception ex) { log.ErrorFormat("[DoLoad] Problem on loading file={0}, exception={1}.", file, ex); loadStat.ErrorException = ex; } returnValue.Add(loadStat); } return returnValue; }
public void ProductIdFetcher() { //arrange string htmlCatalogRepsonse = File.ReadAllText(m_filePathToDecompressedResponse); ProductBasicDataFetcher productFetcher = new ProductBasicDataFetcher(htmlCatalogRepsonse); //act List<ProductBasicData> productBasicDatas = productFetcher.FetchProducts(); //assert Assert.IsTrue(productBasicDatas.Count > 0); foreach (var product in productBasicDatas) { Assert.IsFalse(string.IsNullOrEmpty(product.Barcode)); Assert.IsFalse(string.IsNullOrEmpty(product.Description)); Assert.IsFalse(string.IsNullOrEmpty(product.ProductId)); Assert.IsFalse(string.IsNullOrEmpty(product.ProductName)); } }
//[TestMethod] public void ProductFetcherIntegrationTest() { //arrange string folder = @"C:\Temp\spontaneouse\catalogData"; List<ProductBasicData> products = new List<ProductBasicData>(); var allFiles = Directory.GetFiles(folder, "*.txt"); foreach (var item in allFiles) { string html = File.ReadAllText(item); ProductBasicDataFetcher fetcher = new ProductBasicDataFetcher(html); ProductFetcher extendDataFetcher = new ProductFetcher(); ProductDataExtendedDataBuilder builder = new ProductDataExtendedDataBuilder(); //act products = fetcher.FetchProducts(); foreach (var product in products) { product.Category = item; string crawledHtml = extendDataFetcher.GetProductExtendedData(product); product.ExtendedData = builder.Build(crawledHtml); } } //assert foreach (var product in products) { Assert.IsNotNull(product.ExtendedData); } //TODO Add save to DB method. }