Grain Technical Test
bundle the ruby gems
$ bundle install
$ rails db:setup
$ rails s
$ rspec
***Now support only orders list and order detail ***
GET /orders
Auth-Token: {token}
None
Code: 200 (OK) Content: JSON
{
"orders": [
{
"id": 2,
"order_id": "ORD1520211697",
"delivery_date": "2018-03-05",
"delivery_time": "01:01 - 01:31 AM",
"feedback_submitted": false,
"order_items": [
{
"order_item_id": 2,
"name": "Beef Bulgogi Bibimbap"
},
{
"order_item_id": 3,
"name": "Tofu‑Powered Tabbouleh"
}]
},
{
"id": 1,
"order_id": "ORD1520211687",
"delivery_date": "2018-03-05",
"delivery_time": "01:01 - 01:31 AM",
"feedback_submitted": false,
"order_items": [
{
"order_item_id": 1,
"name": "Laksa Potato Salad"
}]
}]
}GET /orders/:order_id
Auth-Token: {token}
order_id: "ORD1519985528"
Code: 200 (OK) Content: JSON
{
"order":
{
"order_id": "ORD1520211697",
"delivery_date": "2018-03-05",
"delivery_time": "01:01 - 01:31 AM",
"order_items": [
{
"name": "Beef Bulgogi Bibimbap",
"quantity": 3,
"total_price": 45
},
{
"name": "Tofu‑Powered Tabbouleh",
"quantity": 2,
"total_price": 18
}]
}
}Code: 404 (NotFound) Content: JSON
{
"status": "Failed",
"msg": "Order_id Not Found"
}POST /orders/:order_id/feedbacks
Auth-Token: {token}
order_id: "ORD1520211697"
{
"feedbacks": [
{
"ratable_id": 1,
"ratable_type": "DeliveryOrder",
"rating": 1,
"comment": "Good"
},
{
"ratable_id": 1,
"ratable_type": "OrderItem",
"rating": -1,
"comment": "So So"
}
{
"ratable_id": 2,
"ratable_type": "OrderItem",
"rating": 1,
"comment": "Awesome"
}]
}Code: 200 (OK) Content: JSON
{
"status": "OK"
}Code: 401 (BadRequest) Content: JSON
{
"status": "Failed",
"msg": "Required attribute empty"
}GET /orders/:order_id/feedbacks
Auth-Token: {token}
order_id: "ORD1519985528"
Code: 200 (OK) Content: JSON
{
"feedbacks": [
{
"ratable_id": 1,
"ratable_type": "DeliveryOrder",
"rating": 1,
"comment": "Good"
},
{
"ratable_id": 1,
"ratable_type": "OrderItem",
"rating": -1,
"comment": "So So"
}
{
"ratable_id": 2,
"ratable_type": "OrderItem",
"rating": 1,
"comment": "Awesome"
}]
}