From f22db20458624ab20693eadf90430a18d3d77c83 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Wed, 7 Nov 2018 23:29:21 +0300 Subject: [PATCH 01/10] [start #161792101] test for creating order --- app/tests/test_views.py | 38 ++++++++++++++++++++++++++------------ requirements.txt | 17 +++++++++++++++++ 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index f28b4ce..20552a8 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -1,15 +1,29 @@ -# 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 + def test_create_order(self): + response = self.app.post( + '/api/v1/parcels', data=json.dumps(self.data), content_type='application/json') + + result = json.loads(response.data) + self.assertEqual(response.status_code, 201) + self.assertIn('pending', 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 From b7601bb78e5583d796cf9f553dbd1f0c5f15f551 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Wed, 7 Nov 2018 23:41:02 +0300 Subject: [PATCH 02/10] [fixes #161792101] test for fetching all orders --- app/tests/test_views.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 20552a8..3017e95 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -19,11 +19,24 @@ def setUp(self): 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.assertEqual(response.status_code, 201) 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)) + + if __name__ == '__main__': unittest.main() From c6536032a9784d1965afa6194eea06f59922879d Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Wed, 7 Nov 2018 23:57:09 +0300 Subject: [PATCH 03/10] [fixes #161792101] test for fetching specific order --- app/tests/test_views.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 3017e95..106155e 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -35,7 +35,18 @@ def test_get_all_orders(self): 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)) if __name__ == '__main__': From 7c53fa9c5730f0d8a6736f8911baba2c7d80e95f Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 00:21:51 +0300 Subject: [PATCH 04/10] [fixes #161792101] test for fetching orders by specific user --- app/tests/test_views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 106155e..903b214 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -48,6 +48,18 @@ def test_get_specific_order(self): 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/parcels/588356', content_type='application/json') + self.assertEqual(response.status_code, 200) + + result = json.loads(response.data) + self.assertIn('588356', str(result)) + if __name__ == '__main__': unittest.main() From 301b6ec13bdfe7c657ebe0c8ebdd72811f9fbb01 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 00:24:07 +0300 Subject: [PATCH 05/10] [fixes #161792101] test for fetching orders by specific user --- app/tests/test_views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 903b214..2167a0d 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -54,7 +54,7 @@ def test_get_delivery_orders_by_user(self): self.assertEqual(response.status_code, 201) response = self.app.get( - '/api/v1/parcels/588356', content_type='application/json') + '/api/v1/users/1/parcels', content_type='application/json') self.assertEqual(response.status_code, 200) result = json.loads(response.data) From 7f6e50e9952858ddd5fbca25d27ddcd14ff3c03a Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 00:43:31 +0300 Subject: [PATCH 06/10] [fixes #161792101] test for cancel delivery order --- app/tests/test_views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 2167a0d..d03ea5b 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -60,6 +60,18 @@ def test_get_delivery_orders_by_user(self): 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)) + if __name__ == '__main__': unittest.main() From 99cfdbf2a405e9b62e3d0569ce3c2dbe9403a877 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 00:54:03 +0300 Subject: [PATCH 07/10] [fixes #161792101] test for updating parcel order --- app/tests/test_views.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index d03ea5b..0f38a78 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -16,6 +16,11 @@ def setUp(self): "sender": 1 } + self.edit_data = { + "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') @@ -72,6 +77,18 @@ def test_cancel_delivery_order(self): 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)) + if __name__ == '__main__': unittest.main() From 04574e59acb36b4948f43703063ffc99876000ea Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 01:00:55 +0300 Subject: [PATCH 08/10] [fixes #161792101] test for changing delivery location --- app/tests/test_views.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 0f38a78..cf62dd1 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -17,6 +17,7 @@ def setUp(self): } self.edit_data = { + "delivery location": "narok", "current location": "kikuyu", "status": "in transit" } @@ -89,6 +90,18 @@ def test_edit_delivery_order(self): 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)) + if __name__ == '__main__': unittest.main() From 915895d1f313d06a3e88f1add2135b34f19cae69 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 01:35:26 +0300 Subject: [PATCH 09/10] [fixes #161792101] test for geting the number of delivered orders --- app/api/v1/models/orders_model.py | 13 ++++++++++--- app/tests/test_views.py | 12 ++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) 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 cf62dd1..65b7971 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -102,6 +102,18 @@ def test_change_delivery_location(self): 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)) + if __name__ == '__main__': unittest.main() From b88144528960ae97dbeca79dd8188d71a8ff0f17 Mon Sep 17 00:00:00 2001 From: mnswaleh Date: Thu, 8 Nov 2018 01:40:46 +0300 Subject: [PATCH 10/10] [fixes #161792101] test for geting the number of orders in transit for user --- app/tests/test_views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/tests/test_views.py b/app/tests/test_views.py index 65b7971..3bf0d2d 100644 --- a/app/tests/test_views.py +++ b/app/tests/test_views.py @@ -114,6 +114,18 @@ def test_get_delivered_orders_for_user(self): 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()