public void LoadProperties() { List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); properties.Add(new PropertyMetaData() { Name = "hardwarevendor", Type = "String" }); properties.Add(new PropertyMetaData() { Name = "hardwarevariants", Type = "Array" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); _complexPropertyTypes.Add("hardwarevariants", typeof(IReadOnlyList <string>)); CreatePipeline(); Assert.AreEqual(3, _engine.Properties.Count); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "ismobile")); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "hardwarevendor")); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "hardwarevariants")); }
public void LoadProperties_NoMatchSubProperties() { List <PropertyMetaData> subproperties = new List <PropertyMetaData>(); subproperties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); subproperties.Add(new PropertyMetaData() { Name = "hardwarevendor", Type = "String" }); subproperties.Add(new PropertyMetaData() { Name = "hardwarevariants", Type = "Array" }); List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "cloudComplexProperty", Type = "Array", ItemProperties = subproperties }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); CreatePipeline(); }
public void LoadProperties_WrongProperties() { List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); properties.Add(new PropertyMetaData() { Name = "hardwarevendor", Type = "String" }); properties.Add(new PropertyMetaData() { Name = "hardwarevariants", Type = "Array" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test2", devicePropertyData); try { CreatePipeline(); Assert.Fail("PipelineException should be thrown"); } catch (PipelineException ex) { Assert.AreEqual( string.Format(CultureInfo.InvariantCulture, PropertiesError, "test"), ex.Message); } }
public ActionResult Edit(ProductMetaData MyProduct, FormCollection fc) { if (ModelState.IsValid) { String[] res = generatePaths(MyProduct.LargeImage, MyProduct.SmallImage, MyProduct.ProductName); MyProduct.LargeImagePath = res[0]; MyProduct.SmallImagePath = res[1]; ViewBag.Images = fc["largeimg"]; ViewBag.SmallImage = fc["smallimg"]; Product tblProduct = new Product(); tblProduct.ProductID = MyProduct.ProductID; tblProduct.ProductName = MyProduct.ProductName; tblProduct.Price = MyProduct.Price; tblProduct.Quantity = MyProduct.Quantity; tblProduct.Category = MyProduct.Category; tblProduct.ShortDescription = MyProduct.ShortDescription; tblProduct.LongDescription = MyProduct.LongDescription; tblProduct.LargeImage = MyProduct.LargeImagePath; tblProduct.SmallImage = MyProduct.SmallImagePath; HttpResponseMessage webResponse = webClient.PutAsJsonAsync("http://localhost:64732/api/Products/", tblProduct).Result; if (webResponse.IsSuccessStatusCode) { removeImages(fc["largeimg"].ToString(), fc["smallimg"].ToString()); saveImages(MyProduct.LargeImage, MyProduct.SmallImage, MyProduct.ProductName.ToString()); logger.Info("SUCCESSFULLY UPDATED ALL THE DETAILS OF " + MyProduct.ProductName); return(RedirectToAction("Index")); } else { logger.Debug("WEB API ERROR FOR UPDATING PRODUCT " + webResponse.StatusCode.ToString()); } } return(View(MyProduct)); }
// GET: Products/Details/5 public ActionResult Details(string id) { ProductMetaData myProduct = null; try { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } HttpResponseMessage webResponse = webClient.GetAsync("http://localhost:64732/api/Products/" + id).Result; Product products = null; if (webResponse.IsSuccessStatusCode) { //Storing the response details recieved from web api var response = webResponse.Content.ReadAsStringAsync().Result; products = JsonConvert.DeserializeObject <Product>(response); } if (products == null) { logger.Debug("ERROR IN GETTING PRODUCT DETAILS OF " + id); return(HttpNotFound()); } List <string> values = products.LargeImage.Split(',').ToList(); values.Remove(""); ViewBag.Images = values; myProduct = setproductMetaData(products); } catch (Exception ex) { logger.Error("ERROR IN GETTING PRODUCT DETAILS OF " + id + ex.Message, ex); } return(View(myProduct)); }
public void Process_NoCloudResponse() { // Setup properties. List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); // Create mock TestInstance so we can see if the ProcessCloudEngine // method is called. var mockTestInstance = new Mock <TestInstance>() { CallBase = true }; mockTestInstance.Protected().Setup( "ProcessCloudEngine", ItExpr.IsAny <IFlowData>(), ItExpr.IsAny <TestData>(), ItExpr.IsAny <string>()).Verifiable(); // Create mock TestRequestEngine var mockRequestEngine = new Mock <TestRequestEngine>() { CallBase = true }; mockRequestEngine.Object.PublicProperties = _propertiesReturnedByRequestEngine; // Construct the pipeline. var pipeline = new PipelineBuilder(new LoggerFactory()) .AddFlowElement(mockRequestEngine.Object) .AddFlowElement(mockTestInstance.Object) .Build(); // Process the pipeline. using (var flowData = pipeline.CreateFlowData()) { flowData .AddEvidence("query.user-agent", "iPhone") .Process(); } // Verify the ProcessCloudEngine method was called mockTestInstance.Protected().Verify( "ProcessCloudEngine", Times.Never(), ItExpr.IsAny <IFlowData>(), ItExpr.IsAny <TestData>(), ItExpr.IsAny <string>()); }
public ProductMetaData setproductMetaData(Product products) { ProductMetaData myProduct = new ProductMetaData(); var config = new MapperConfiguration(cfg => cfg.CreateMap <Product, ProductMetaData>()); var mapper = new Mapper(config); myProduct = mapper.Map <ProductMetaData>(products); return(myProduct); }
public ActionResult Create(ProductMetaData MyProduct) { try { if (ModelState.IsValid) { String[] refs = generatePaths(MyProduct.LargeImage, MyProduct.SmallImage, MyProduct.ProductName.ToString()); Product tblProduct = new Product(); tblProduct.ProductID = ""; tblProduct.ProductName = MyProduct.ProductName; tblProduct.Price = MyProduct.Price; tblProduct.Quantity = MyProduct.Quantity; tblProduct.Category = MyProduct.Category; tblProduct.ShortDescription = MyProduct.ShortDescription; tblProduct.LongDescription = MyProduct.LongDescription; tblProduct.LargeImage = refs[0]; tblProduct.SmallImage = refs[1]; HttpResponseMessage webResponse = webClient.PostAsJsonAsync("http://localhost:64732/api/Products", tblProduct).Result; if (webResponse.IsSuccessStatusCode) { saveImages(MyProduct.LargeImage, MyProduct.SmallImage, MyProduct.ProductName.ToString()); logger.Info("DETAILS SAVED FOR PRODUCT" + MyProduct.ProductName); return(RedirectToAction("Index")); } else { logger.Error("WEB API ERROR FOR SAVING DETAILS " + MyProduct.ProductName + webResponse.StatusCode); } } } catch (DbEntityValidationException dbEx) { foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { System.Console.WriteLine("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage); } } } catch (Exception ex) { logger.Error("ERROR IN SAVING PRODUCTS DETAILS " + ex.Message, ex); } return(View(MyProduct)); }
public void LoadProperties_NoMatchArray() { List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "cloudArrayProperty", Type = "Array" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); CreatePipeline(); }
// GET: Products/Edit/5 public ActionResult Edit(string id) { ProductMetaData myProduct = null; try { if (id == null) { logger.Debug("NULL ID PASSED " + id); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } HttpResponseMessage webResponse = webClient.GetAsync("http://localhost:64732/api/Products/" + id).Result; Product products = null; if (webResponse.IsSuccessStatusCode) { //Storing the response details recieved from web api var response = webResponse.Content.ReadAsStringAsync().Result; products = JsonConvert.DeserializeObject <Product>(response); } else { logger.Debug("WEB API ERROR FOR GETTING PRODUCT " + id + " " + webResponse.StatusCode.ToString()); } List <string> values = products.LargeImage.Split(',').ToList(); values.Remove(""); ViewBag.Images = values; ViewBag.SmallImage = products.SmallImage; myProduct = setproductMetaData(products); webResponse = webClient.GetAsync("http://localhost:64732/api/Categories").Result; if (webResponse.IsSuccessStatusCode) { var Response = webResponse.Content.ReadAsStringAsync().Result; var Category = JsonConvert.DeserializeObject <List <Category> >(Response); TempData["Category"] = new SelectList(Category, "CategoryID", "CategoryName", products.Category.ToString()); logger.Info("SUCCESSFULLY LOADED ALL THE CATEGORIES"); } else { logger.Debug("WEB API ERROR FOR GETTING CATEGORIES " + webResponse.StatusCode.ToString()); } }catch (Exception ex) { logger.Error("ERROR IN UPDATING PRODUCTS DETAILS OF " + myProduct.ProductName + ex.Message, ex); } return(View(myProduct)); }
public ProductMetaData setproductMetaData(Product products) { ProductMetaData myProduct = new ProductMetaData(); myProduct.ProductID = products.ProductID; myProduct.ProductName = products.ProductName; myProduct.Price = products.Price; myProduct.Quantity = products.Quantity; myProduct.ShortDescription = products.ShortDescription; myProduct.LongDescription = products.LongDescription; myProduct.SmallImage = null; myProduct.SmallImagePath = products.SmallImage; myProduct.LargeImage = null; myProduct.LargeImagePath = products.LargeImage; myProduct.Category = products.tblCategory.CategoryName; return(myProduct); }
public void LoadProperties_SubProperties() { List <PropertyMetaData> subproperties = new List <PropertyMetaData>(); subproperties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); subproperties.Add(new PropertyMetaData() { Name = "hardwarevendor", Type = "String" }); subproperties.Add(new PropertyMetaData() { Name = "hardwarevariants", Type = "Array" }); List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "devices", Type = "Array", ItemProperties = subproperties }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); CreatePipeline(); Assert.AreEqual(1, _engine.Properties.Count); Assert.AreEqual("devices", _engine.Properties[0].Name); Assert.AreEqual(3, _engine.Properties[0].ItemProperties.Count); Assert.IsTrue(_engine.Properties[0].ItemProperties.Any(p => p.Name == "ismobile")); Assert.IsTrue(_engine.Properties[0].ItemProperties.Any(p => p.Name == "hardwarevendor")); Assert.IsTrue(_engine.Properties[0].ItemProperties.Any(p => p.Name == "hardwarevariants")); }
public void LoadProperties_NoMatch() { List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "cloudStringProperty", Type = "String" }); properties.Add(new PropertyMetaData() { Name = "cloudBoolProperty", Type = "Boolean" }); properties.Add(new PropertyMetaData() { Name = "cloudJavaScriptProperty", Type = "JavaScript" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); CreatePipeline(); Assert.AreEqual(3, _engine.Properties.Count); var query1 = _engine.Properties.Where(p => p.Name == "cloudStringProperty"); Assert.IsTrue(query1.Any()); Assert.IsTrue(query1.First().Type.Equals(typeof(string))); var query2 = _engine.Properties.Where(p => p.Name == "cloudBoolProperty"); Assert.IsTrue(query2.Any()); Assert.IsTrue(query2.First().Type.Equals(typeof(bool))); var query3 = _engine.Properties.Where(p => p.Name == "cloudJavaScriptProperty"); Assert.IsTrue(query3.Any()); Assert.IsTrue(query3.First().Type.Equals(typeof(JavaScript))); }
public void LoadProperties_DelayedProperties() { List <string> evidenceProperties = new List <string>(); evidenceProperties.Add("javascript"); List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "javascript", Type = "JavaScript", DelayExecution = true }); properties.Add(new PropertyMetaData() { Name = "hardwarevendor", Type = "String", EvidenceProperties = evidenceProperties }); properties.Add(new PropertyMetaData() { Name = "hardwarevariants", Type = "Array", EvidenceProperties = evidenceProperties }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); _complexPropertyTypes.Add("hardwarevariants", typeof(IReadOnlyList <string>)); CreatePipeline(); Assert.AreEqual(3, _engine.Properties.Count); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "javascript")); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "hardwarevendor")); Assert.IsTrue(_engine.Properties.Any(p => p.Name == "hardwarevariants")); Assert.IsTrue(_engine.Properties.Single(p => p.Name == "javascript").DelayExecution); Assert.AreEqual(1, _engine.Properties.Single(p => p.Name == "hardwarevendor").EvidenceProperties.Count); Assert.AreEqual(1, _engine.Properties.Single(p => p.Name == "hardwarevariants").EvidenceProperties.Count); }
public void CloudEngines_WrongOrder() { // Setup properties. List <PropertyMetaData> properties = new List <PropertyMetaData>(); properties.Add(new PropertyMetaData() { Name = "ismobile", Type = "Boolean" }); ProductMetaData devicePropertyData = new ProductMetaData(); devicePropertyData.Properties = properties; _propertiesReturnedByRequestEngine.Add("test", devicePropertyData); // Create mock TestInstance so we can see if the ProcessCloudEngine // method is called. var mockTestInstance = new Mock <TestInstance>() { CallBase = true }; mockTestInstance.Protected().Setup( "ProcessCloudEngine", ItExpr.IsAny <IFlowData>(), ItExpr.IsAny <TestData>(), ItExpr.IsAny <string>()).Verifiable(); // Create mock TestRequestEngine so we can mock the ProcessEngine // method and get it to set it's aspect data. var mockRequestEngine = new Mock <TestRequestEngine>() { CallBase = true }; mockRequestEngine.Object.PublicProperties = _propertiesReturnedByRequestEngine; mockRequestEngine.Protected() .Setup( "ProcessEngine", ItExpr.IsAny <IFlowData>(), ItExpr.IsAny <CloudRequestData>()) .Callback((IFlowData data, CloudRequestData aspectData) => { aspectData.JsonResponse = "{ \"response\": true }"; aspectData.ProcessStarted = true; }); // Construct the pipeline. var pipeline = new PipelineBuilder(new LoggerFactory()) .AddFlowElement(mockTestInstance.Object) .AddFlowElement(mockRequestEngine.Object) .Build(); // Process the pipeline. try { using (var flowData = pipeline.CreateFlowData()) { flowData .AddEvidence("query.user-agent", "iPhone") .Process(); } } catch (AggregateException ex) { var expectedExceptions = ex.InnerExceptions .Where(e => e.GetType() == typeof(PipelineConfigurationException)); Assert.IsTrue( expectedExceptions.Count() > 0, "Aggregate exception did not contain expected PipelineConfigurationException."); Assert.AreEqual( "The 'TestInstanceProxy' requires a 'CloudRequestEngine' " + "before it in the Pipeline. This engine will be unable to " + "produce results until this is corrected.", expectedExceptions.FirstOrDefault()?.Message, "PipelineConfigurationException message was incorrect."); } }