public void ProcessPriceUpdates(string productCode) { // get the necessary dependencies IWebPageEngine pageEngine = EngineLocator.CreateEngine <IWebPageEngine>(); IProductParserEngine priceEngine = EngineLocator.CreateEngine <IProductParserEngine>(); IProductAccessor productAccessor = AccessorLocator.CreateAccessor <IProductAccessor>(); IEmailAccessor emailAccessor = AccessorLocator.CreateAccessor <IEmailAccessor>(); // build the url string url = pageEngine.BuildUrl(productCode); // get the page contents string contents = pageEngine.GetWebPageContents(url); // get the stored product information var product = productAccessor.FindByCode(productCode); // get the current price decimal currentPrice = priceEngine.GetProductPrice(contents, productCode); // if the current price is different from the price threshold then send an email if (currentPrice > 0) { if (product.PriceThreshold != currentPrice) { emailAccessor.SendPriceNotice(product, currentPrice); } } }
public OrderRepository(ICustomerAccessor customers, IProductAccessor products) : this() { _customers = customers ?? throw new ArgumentException(nameof(customers)); _products = products ?? throw new ArgumentException(nameof(products)); }
/// <summary> /// Constructor used for dependency injection /// </summary> public PriceManager(IWebPageEngine pageEngine, IProductParserEngine priceEngine, IProductAccessor productAccessor, IEmailAccessor emailAccessor) { Console.WriteLine("PriceManager constructor called"); _emailAccessor = emailAccessor; _pageEngine = pageEngine; _priceEngine = priceEngine; _productAccessor = productAccessor; }
public void ProductAccessor_SaveNew() { Product product = new Product() { ProductName = "Test", Price = "$10.00", Brand = "HobbyTown", Site = "HobbyTown", ProductUrl = @"http://www.url.com", ListPrice = "$10.00", ProductCode = "MAN12345" }; IAccessorFactory factory = new AccessorFactory(); IProductAccessor acc = factory.CreateAccessor <IProductAccessor>(); product = acc.Save(_connString, product); Assert.AreNotEqual(0, product.Id); Assert.AreEqual("Test", product.ProductName); Assert.AreEqual("$10.00", product.Price); Assert.AreEqual("HobbyTown", product.Brand); Assert.AreEqual("MAN12345", product.ProductCode); }
public ProductController(IProductAccessor products) { _products = products ?? throw new ArgumentException(nameof(products)); }
public ProductManager(IProductAccessor productAccessor) { _productAccessor = productAccessor; }
public ProductManager() { _productAccessor = new ProductAccessor(); }
public void TestSetup() { _productAccessor = new FakeProductAccessor(); _fakeProductAccessor = new FakeProductAccessor(); _productManager = new ProductManager(_fakeProductAccessor); }
public void TestCleanup() { _productAccessor = null; _fakeProductAccessor = null; }
public ProductRepository(IProductAccessor productAccessor) { _productAccessor = productAccessor; }