コード例 #1
0
 def delete(order_id=None):
     """ Delte an order by order_id """
     if not order_id:
         return "Must specify an order_id"
     repository = OrderCommands()
     repository.delete(order_id=order_id)
     return {"order": {"order_id": order_id}}
コード例 #2
0
    def test_update(self):
        """ The PUT on `/order` should update an order """
        order_id = "order_1"
        mock_order = {
            **MOCK_ORDER_RESPONSE[0],
            "order_id": order_id,
        }
        OrderCommands.create(**mock_order)

        mock_updated_items_request = MOCK_ORDER_REQUEST[1]['items']
        mock_updated_items_response = [{
            **MOCK_ITEMS[1],
            "item_id": 2,
        }]
        response = self.client.put(
            f"/v1/order/{order_id}",
            content_type="application/json",
            data=json.dumps({"items": mock_updated_items_request}),
        )

        self.assertEqual(response.status_code, 200)
        response_json = json.loads(response.data.decode("utf-8"))
        expected_response = {
            "order": {
                **mock_order,
                "items": mock_updated_items_response,
                "total_price": MOCK_ITEMS[1]['price'],
            }
        }
        self.assertEqual(
            response_json,
            expected_response,
        )
        order = OrderCommands.get(order_id=order_id)
        self.assertEqual(order.items, mock_updated_items_response)
コード例 #3
0
 def get(order_id=None):
     """ Return order information based on order_id """
     if order_id:
         order = OrderCommands.get(order_id=order_id)
         return jsonify({"order": order.json})
     else:
         orders = OrderCommands.get(order_id=order_id)
         return jsonify({"orders": [order.json for order in orders]})
コード例 #4
0
 def put(order_id):
     """ Update an order based on the sent information """
     if not order_id:
         return "Must specify an order_id"
     json_data = request.get_json(force=True)
     items = OrderResource._get_items_data(items=json_data.get('items', []))
     total_price = OrderResource._get_total_price(items=items)
     repository = OrderCommands()
     order = repository.update(order_id=order_id,
                               items=items,
                               delivery=json_data.get('delivery', None),
                               total_price=total_price)
     return jsonify({"order": order.json})
コード例 #5
0
    def test_get(self):
        """ The GET on `/order/:order_id` should return an order """
        order_id = "order_1"
        mock_order = {
            **MOCK_ORDER_RESPONSE[0],
            "order_id": order_id,
        }
        OrderCommands.create(**mock_order)

        response = self.client.get(f"/v1/order/{order_id}")
        self.assertEqual(response.status_code, 200)
        response_json = json.loads(response.data.decode("utf-8"))
        self.assertEqual(
            response_json,
            {"order": mock_order},
        )
コード例 #6
0
    def test_get_all(self):
        """ The GET on `/order` should return all orders """
        mock_orders = [
            {**mock_order, "order_id": f"order_{i}"}
            for i, mock_order in enumerate(MOCK_ORDER_RESPONSE)
        ]

        for mock_order in mock_orders:
            OrderCommands.create(**mock_order)

        response = self.client.get(f"/v1/order")
        self.assertEqual(response.status_code, 200)
        response_json = json.loads(response.data.decode("utf-8"))
        self.assertEqual(
            response_json,
            {"orders": MOCK_ORDER_RESPONSE},
        )
コード例 #7
0
 def test_delete(self):
     """ The DELETE on `/order` should delete an order """
     order_id = "order_3"
     items = [{"name": "Pepsi", "price": 10.00}]
     delivery = {"service": "UberEats"}
     OrderCommands.create(order_id=order_id, items=items, delivery=delivery)
     response = self.client.delete(
         f"/v1/order/{order_id}",
     )
     self.assertEqual(response.status_code, 200)
     response_json = json.loads(response.data.decode("utf-8"))
     self.assertEqual(
         response_json,
         {"order": {"order_id": order_id}},
     )
     try:
         OrderCommands.get(order_id=order_id)
     except Exception as e:
         self.assertEqual(str(e), 'No row was found for one()')
コード例 #8
0
 def post():
     """ Create an order based on the sent information """
     json_data = request.get_json(force=True)
     order_id = f"order_{shortuuid.uuid()}"
     items = OrderResource._get_items_data(items=json_data.get('items',
                                                               []), )
     total_price = OrderResource._get_total_price(items=items)
     order = OrderCommands.create(
         order_id=order_id,
         items=items,
         delivery=json_data.get('delivery', None),
         total_price=total_price,
     )
     return jsonify({"order": order.json})
コード例 #9
0
 def post():
     """ Create an order based on the sent delivery information """
     json_data = request.get_json(force=True)
     order_id = f"order_{shortuuid.uuid()}"
     items = DeliveryResource._get_items_data(
         items=json_data.get('order_details', []))
     total_price = DeliveryResource._get_total_price(items=items)
     delivery = OrderCommands.create(order_id=order_id,
                                     items=items,
                                     total_price=total_price,
                                     delivery={
                                         "service":
                                         json_data.get('service', None),
                                         "address":
                                         json_data.get('address', None),
                                         "service_order_id":
                                         json_data.get(
                                             'service_order_id', None),
                                     })
     return jsonify({"delivery": delivery.json})