Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions app/api/v1/models/orders_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class OrdersModel(object):

def __init__(self):
self.user = UsersModel()
self.users = self.user.get_users()

def create_order(self, order_no, pick_up, delivery, weight, price, sender):
today = date.today()
Expand All @@ -42,9 +43,8 @@ def create_order(self, order_no, pick_up, delivery, weight, price, sender):
return order

def get_orders(self):
users = self.user.get_users()
for order in orders:
for user in users:
for user in self.users:
if user['user id'] == order['sender']:
order['sender'] = user['username']
break
Expand Down Expand Up @@ -73,6 +73,13 @@ def cancel_order(self, order_id):
return result

def get_user_orders(self, user_id):
user_orders = [order for order in orders if order['sender'] == user_id]
user_orders = []
for order in orders:
if order['sender'] == user_id:
for user in self.users:
if user['user id'] == order['sender']:
order['sender'] = user['username']
break
user_orders.append(order)

return user_orders
140 changes: 128 additions & 12 deletions app/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,131 @@
# from app import create_app
# import unittest
# import json
from app import create_app
import unittest
import json

# class TestDeliveryOrders(unittest.TestCase):
# def setUp(self):
# create_app().testing = True
# self.app = create_app().test_client()
# self.data = {}

# def test_get_orders(self):
# response = self.app.get()
class TestDeliveryOrders(unittest.TestCase):
def setUp(self):
create_app().testing = True
self.app = create_app().test_client()
self.data = {
"order no": "588356",
"pick up location": "nanyuki",
"delivery location": "nairobi",
"weight": "2kg",
"price": "2000",
"sender": 1
}

# if __name__ == '__main__':
# unittest.main()
self.edit_data = {
"delivery location": "narok",
"current location": "kikuyu",
"status": "in transit"
}

def test_create_order(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

result = json.loads(response.data)
self.assertIn('pending', str(result))

def test_get_all_orders(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.get(
'/api/v1/parcels', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('588356', str(result))

def test_get_specific_order(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.get(
'/api/v1/parcels/588356', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('588356', str(result))

def test_get_delivery_orders_by_user(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.get(
'/api/v1/users/1/parcels', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('588356', str(result))

def test_cancel_delivery_order(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.put(
'/api/v1/parcels/588356/cancel', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('canceled', str(result))

def test_edit_delivery_order(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.put(
'/api/v1/parcels/588356', data=json.dumps(self.edit_data), content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('kikuyu', str(result))

def test_change_delivery_location(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.put(
'/api/v1/parcels/588356/change-delivery', data=json.dumps(self.edit_data), content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('narok', str(result))

def test_get_delivered_orders_for_user(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.get(
'/api/v1/users/1/parcels', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('delivered', str(result))

def test_get_in_transit_orders_for_user(self):
response = self.app.post(
'/api/v1/parcels', data=json.dumps(self.data), content_type='application/json')
self.assertEqual(response.status_code, 201)

response = self.app.get(
'/api/v1/users/1/in-transit', content_type='application/json')
self.assertEqual(response.status_code, 200)

result = json.loads(response.data)
self.assertIn('in-transit', str(result))


if __name__ == '__main__':
unittest.main()
17 changes: 17 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
aniso8601==4.0.1
astroid==2.0.4
atomicwrites==1.2.1
attrs==18.2.0
autopep8==1.4.2
Click==7.0
Flask==1.0.2
Flask-RESTful==0.3.6
isort==4.3.4
itsdangerous==1.1.0
Jinja2==2.10
lazy-object-proxy==1.3.1
MarkupSafe==1.1.0
mccabe==0.6.1
more-itertools==4.3.0
pluggy==0.8.0
py==1.7.0
pycodestyle==2.4.0
pylint==2.1.1
pytest==3.10.0
pytz==2018.7
six==1.11.0
typed-ast==1.1.0
Werkzeug==0.14.1
wrapt==1.10.11