diff --git a/app/api/v1/models/orders_model.py b/app/api/v1/models/orders_model.py index 82ec466..37033ef 100644 --- a/app/api/v1/models/orders_model.py +++ b/app/api/v1/models/orders_model.py @@ -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() @@ -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 @@ -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 diff --git a/app/tests/test_views.py b/app/tests/test_views.py index f28b4ce..3bf0d2d 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -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() \ No newline at end of file + 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() diff --git a/requirements.txt b/requirements.txt index 3dce30d..3536796 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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