示例#1
0
        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;
        }
示例#2
0
        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));
            }
        }
示例#3
0
        //[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.
        }