예제 #1
0
 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)
예제 #2
0
파일: routes.py 프로젝트: iLtc/shopcarts
    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)
예제 #3
0
파일: routes.py 프로젝트: iLtc/shopcarts
    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
예제 #4
0
 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"])
예제 #5
0
파일: routes.py 프로젝트: iLtc/shopcarts
    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
예제 #6
0
 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)