def test_find_by_shopcart_id_multiple(self): """ Find Shopcart Items by Shopcart id for Shopcart with multiple items """ shopcart = Shopcart().deserialize({"user_id": 12345}) shopcart.create() ShopcartItem(id=1, sid=shopcart.id, sku=3, name="obj 1", price=4, amount=5).create() ShopcartItem(id=6, sid=shopcart.id, sku=7, name="obj 2", price=8, amount=9).create() items_queried = ShopcartItem.find_by_shopcartid(shopcart.id) self.assertEqual(len(items_queried), 2)
def put(self, shopcart_id): """ Place Order for a Shopcart This endpoint will place an order for a Shopcart based the id specified in the path """ logger.info('Request to place order for Shopcart with id: %s', shopcart_id) shopcart = Shopcart.find(shopcart_id) if not shopcart: logger.info("Shopcart with ID [%s] is does not exist.", shopcart_id) api.abort( status.HTTP_404_NOT_FOUND, "Shopcart with ID [%s] is does not exist." % shopcart_id ) shopcart_items = ShopcartItem.find_by_shopcartid(shopcart_id) if shopcart_items is None or len(shopcart_items) == 0: logger.info("Shopcart with ID [%s] is empty.", shopcart_id) api.abort( status.HTTP_404_NOT_FOUND, "Shopcart with ID [%s] is empty." % shopcart_id ) shopcart_items_list = [item.serialize() for item in shopcart_items] # once we have the list of shopcart items we can send in JSON format to the orders team #add the order status as PLACED for a new order order_items= [] for item in shopcart_items_list: order_item = {} order_item["item_id"] = int(item["id"]) order_item["product_id"] = int(item["sku"]) order_item["quantity"] = int(item["amount"]) order_item["price"] = item["price"] order_item["status"] = "PLACED" order_items.append(order_item) order = { "customer_id": int(shopcart.serialize()["user_id"]), "order_items": order_items, } payload = json.dumps(order) headers = {'content-type': 'application/json'} res = requests.post( ORDER_ENDPOINT, data=payload, headers=headers ) logger.info('Put Order response %d %s', res.status_code, res.text) if res.status_code != 201: api.abort( status.HTTP_400_BAD_REQUEST, "Unable to place order for shopcart [%s]." % shopcart_id ) shopcart.delete() logger.info('Shopcart with id: %s has been deleted', shopcart_id) return make_response("", status.HTTP_204_NO_CONTENT)
def get(self, shopcart_id): """ Get information of a shopcart This endpoint will return items in the shop cart """ logger.info("Request to get items in a shopcart") shopcart_items = ShopcartItem.find_by_shopcartid(shopcart_id) result = [item.serialize() for item in shopcart_items] logger.info("Fetched items for Shopcart with ID [%s].", shopcart_id) return result, status.HTTP_200_OK
def test_find_by_shopcart_id(self): """ Find Shopcart Items by Shopcart id for Shopcart with single item """ shopcart = Shopcart().deserialize({"user_id": 12345}) shopcart.create() data = {"id": 1, "sid": shopcart.id, "sku": 150, "name": "test obj1", "price": 100, "amount": 1} ShopcartItem(id=data["id"], sid=data["sid"], sku=data["sku"], name=data["name"], price=data["price"], amount=data["amount"]).create() item_queried = ShopcartItem.find_by_shopcartid(data["sid"])[0] self.assertEqual(item_queried.id, data["id"]) self.assertEqual(item_queried.sid, data["sid"]) self.assertEqual(item_queried.sku, data["sku"]) self.assertEqual(item_queried.name, data["name"]) self.assertEqual(item_queried.price, data["price"]) self.assertEqual(item_queried.amount, data["amount"])
def get(self, shopcart_id): """ Gets information about a Shopcart This endpoint will get information about a shopcart """ logger.info("Request to get information of a shopcart") shopcart = Shopcart.find(shopcart_id) if shopcart is None: logger.info("Shopcart with ID [%s] not found.", shopcart_id) api.abort( status.HTTP_404_NOT_FOUND, "Shopcart with id '{}' was not found.".format(shopcart_id) ) shopcart_items = ShopcartItem.find_by_shopcartid(shopcart_id) response = shopcart.serialize() response["items"] = [item.serialize() for item in shopcart_items] logger.info("Shopcart with ID [%s] fetched.", shopcart.id) return response, status.HTTP_200_OK
def test_find_by_shopcart_id_with_no_items(self): """ Find Shopcart Items by empty Shopcart """ item_queried = ShopcartItem.find_by_shopcartid(10) self.assertEqual(len(item_queried), 0)