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}}
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)
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]})
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})
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}, )
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}, )
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()')
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})
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})