public void GetPriceWithOffer() { var itemOne = new Item { BarCodeId = 111 }; //Apple barcode var itemTwo = new Item { BarCodeId = 222 }; //Orange barcode var items = new List <Item> { itemOne, itemTwo }; var priceCalculationResource = new PriceCalculationResource { Items = items }; var content = JsonConvert.SerializeObject(priceCalculationResource); byte[] byteArray = Encoding.UTF8.GetBytes(content); HttpWebResponse response = null; var theRequest = (HttpWebRequest)WebRequest.Create("http://localhost:27387/api/getprice/Offer"); theRequest.ContentType = "application/Json"; theRequest.Method = WebRequestMethods.Http.Post; theRequest.ContentLength = content.Length; var requestStream = theRequest.GetRequestStream(); requestStream.Write(byteArray, 0, byteArray.Length); requestStream.Close(); response = (HttpWebResponse)theRequest.GetResponse(); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
/// <summary> /// CalculatePrice method will call the mappers to get the total price includes in the status data contract /// </summary> /// <param name="priceCalculationResource"> contains the list of items</param> /// <param name="calculateOffer">default to calculate the price depends on the offer</param> /// <example>[ 111, 111, 222, 111 ] </example> 111 represnt apple barcode, 222 represent orange barcode for example /// <returns>PriceCalculationStatusResource</returns> public PriceCalculationStatusResource CalculatePrice(PriceCalculationResource priceCalculationResource, bool calculateOffer = false) { var priceCalculationStatusResource = new PriceCalculationStatusResource(); //Validate resource if (!ValidateResource(priceCalculationResource)) { return(priceCalculationStatusResource); } try { //Call mapper to get total price var priceCalculationMapper = new PriceCalculationMapper(); if (calculateOffer) { priceCalculationStatusResource = priceCalculationMapper.GetPriceWithOffer(priceCalculationResource.Items); } else { priceCalculationStatusResource = priceCalculationMapper.GetPrice(priceCalculationResource.Items); } } catch (Exception ex) { throw new Exception(String.Format("Error in calculating price in PriceCalculationManager.CalculatePrice method : {0}", ex.Message)); } return(priceCalculationStatusResource); }
public void GetPricewithOffer() { var itemApple1 = new Item { BarCodeId = 111 }; //Apple barcode var itemApple2 = new Item { BarCodeId = 111 }; //Apple barcode var itemApple3 = new Item { BarCodeId = 111 }; //Apple barcode var itemApple4 = new Item { BarCodeId = 111 }; //Apple barcode var itemApple5 = new Item { BarCodeId = 111 }; //Apple barcode var itemOrange1 = new Item { BarCodeId = 222 }; //Orange barcode var itemOrange2 = new Item { BarCodeId = 222 }; //Orange barcode var itemOrange3 = new Item { BarCodeId = 222 }; //Orange barcode var itemOrange4 = new Item { BarCodeId = 222 }; //Orange barcode var items = new List <Item> { itemApple1, itemApple2, itemApple3, itemApple4, itemApple5, itemOrange1, itemOrange2, itemOrange3, itemOrange4 }; var priceCalculationResource = new PriceCalculationResource { Items = items }; var manager = new PriceCalculationManager(); var result = manager.CalculatePrice(priceCalculationResource); Assert.IsNotNull(result); Assert.IsTrue(result.TotalPrice.ToString() == "2.3"); }
public Task <HttpResponseMessage> GetPriceOffer(PriceCalculationResource priceCalculationResource) { return(this.TryWork(async() => { try { //call PriceCalculationManager to calculate price of the passed data contract var priceCalculationManager = new PriceCalculationManager(); var priceCalculationStatusResource = priceCalculationManager.CalculatePrice(priceCalculationResource, true); return Request.CreateResponse(HttpStatusCode.OK, priceCalculationStatusResource); } catch (Exception ex) { return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, ex); } } )); }
public void GetPrice() { var itemOne = new Item { BarCodeId = 111 }; //Apple barcode var itemTwo = new Item { BarCodeId = 222 }; //Orange barcode var items = new List <Item> { itemOne, itemTwo }; var priceCalculationResource = new PriceCalculationResource { Items = items }; var manager = new PriceCalculationManager(); var result = manager.CalculatePrice(priceCalculationResource); Assert.IsNotNull(result); Assert.IsTrue(result.TotalPrice == "0.85"); }
/// <summary> /// ValidateResource to validate the request body object /// </summary> /// <param name="priceCalculationResource"></param> /// <returns>bool</returns> private static bool ValidateResource(PriceCalculationResource priceCalculationResource) { var valid = priceCalculationResource != null && priceCalculationResource.Items != null; return(valid); }