def test_list_orders_date_range_ok_response( self, mock_get_user_by_email_or_id, mock_get, mock_get_range_paginated_options_all, mock_get_location ): '''Test list_orders_date ''' # Arrange with self.app.app_context(): mock_get_location.return_value = 1 mock_get_range_paginated_options_all.return_value.items = [ self.mock_order, ] mock_get.return_value.meal_item_orders = [self.mock_meal_item, ] mock_get_user_by_email_or_id.return_value = { 'id': 1, 'mail': '*****@*****.**', 'first_name': 'Joseph', 'last_name': 'Serunjogi' } order_controller = OrderController(self.request_context) # Act result = order_controller.list_orders_date_range( '2019-02-11', '2019-02-12' ) # Assert assert result.status_code == 200 assert result.get_json()['msg'] == 'OK'
def test_create_order_ok_response( self, mock_order_controller_datetime, mock_create_order, mock_get_meals_by_ids, mock_datetime, mock_check_date_current_vs_date_for, mock_location_repo_get, mock_user_has_order, mock_request_params, mock_get_location, mock_auth_user ): '''Test create_order OK response. ''' # Arrange with self.app.app_context(): mock_order_controller_datetime.now = Mock( return_value=datetime(2019, 2, 13, 15, 0, 0) ) mock_order_controller_datetime.strptime = Mock( return_value=datetime(2019, 2, 14, 13, 0, 0) ) mock_datetime.utcnow = Mock( return_value=datetime(2019, 2, 13, 9, 0, 0) ) mock_auth_user.return_value = { 'id': 1, 'mail': '*****@*****.**', 'first_name': 'Joseph', 'last_name': 'Serunjogi' } mock_get_location.return_value = 1 mock_date_booked = Mock() mock_request_params.return_value = ( mock_date_booked, 'web', 'lunch', [self.mock_meal_item, ], 1 ) mock_user_has_order.return_value = False mock_location_repo_get.return_value = Location( id=1, created_at=datetime.now, updated_at=datetime.now(), is_deleted=False, name='mock', zone='+3' ) mock_check_date_current_vs_date_for.return_value = False mock_get_meals_by_ids.return_value = [self.mock_meal_item, ] mock_create_order.return_value = self.mock_order order_controller = OrderController(self.request_context) # Act result = order_controller.create_order() # Assert assert result.status_code == 201 assert result.get_json()['msg'] == 'OK'
def test_create_order_when_booked_late( self, mock_order_controller_datetime, mock_datetime, mock_check_date_current_vs_date_for, mock_location_repo_get, mock_user_has_order, mock_request_params, mock_get_location, mock_auth_user ): '''Testing create_order when booked late. ''' # Arrange with self.app.app_context(): mock_order_controller_datetime.now = Mock( return_value=datetime(2019, 2, 13, 15, 0, 0) ) mock_order_controller_datetime.strptime = Mock( return_value=datetime(2019, 2, 14, 13, 0, 0) ) mock_datetime.utcnow = Mock( return_value=datetime(2019, 2, 13, 16, 0, 0) ) mock_auth_user.return_value = { 'id': 1, 'mail': '*****@*****.**', 'first_name': 'Joseph', 'last_name': 'Serunjogi' } mock_get_location.return_value = 1 mock_request_params.return_value = ( Mock(), 'web', 'lunch', [self.mock_meal_item, ], 1 ) mock_user_has_order.return_value = False mock_location_repo_get.return_value = Location( id=1, created_at=datetime.now, updated_at=datetime.now(), is_deleted=False, name='mock', zone='+3' ) mock_check_date_current_vs_date_for.return_value = True order_controller = OrderController(self.request_context) # Act result = order_controller.create_order() # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'It is too late to book a ' \ 'meal for the selected date '
def test_get_order_when_order_doesnot_exist(self, mock_get): '''Test get_order when order doesnot exist. ''' # Arrange with self.app.app_context(): mock_get.return_value = None order_controller = OrderController(self.request_context) # Act result = order_controller.get_order(1) # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Order not found'
def test_delete_order_when_order_doesnot_exist(self, mock_order_repo_get): '''Test delete_order when the order doesnot exist. ''' # Arrange with self.app.app_context(): mock_order_repo_get.return_value = None order_controller = OrderController(self.request_context) # Act result = order_controller.delete_order(1) # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Invalid or incorrect ' \ 'order_id provided'
def test_check_order_ok_response(self, mock_find_first, mock_request_params): '''Test check_order OK response. ''' # Arrange with self.app.app_context(): mock_find_first.return_value = self.mock_order mock_request_params.return_value = (1, 'mock', '2019-02-13') order_controller = OrderController(self.request_context) # Act result = order_controller.check_order() # Assert assert result.status_code == 200 assert result.get_json()['msg'] == 'OK'
def test_delete_order_when_order_is_already_deleted( self, mock_order_repo_get): '''Test delete_order when the order is already deleted. ''' # Arrange with self.app.app_context(): mock_order_repo_get.return_value = self.mock_deleted_order order_controller = OrderController(self.request_context) # Act result = order_controller.delete_order(1) # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Order has already been' \ ' deleted'
def test_collect_order_when_order_already_collected( self, mock_find_first, mock_request_params): '''Test collect_order when order is already collected. ''' # Arrange with self.app.app_context(): mock_find_first.return_value = self.mock_collected_order mock_request_params.return_value = (1, 'mock', '2019-02-13') order_controller = OrderController(self.request_context) # Act result = order_controller.collect_order() # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Order already collected'
def test_check_order_when_order_doesnot_exist(self, mock_find_first, mock_request_params): '''Test check_order when the order doesnot exist. ''' # Arrange with self.app.app_context(): mock_find_first.return_value = None mock_request_params.return_value = (1, 'breakfast', '2019-02-13') order_controller = OrderController(self.request_context) # Act result = order_controller.check_order() # Assert assert result.status_code == 200 assert result.get_json( )['msg'] == 'User has no breakfast order for this date'
def test_collect_order_ok_response(self, mock_order_repo_update, mock_find_first, mock_request_params): '''Test collect_order OK response. ''' # Arrange with self.app.app_context(): mock_find_first.return_value = self.mock_order mock_request_params.return_value = (1, 'mock', '2029-02-13') mock_order_repo_update.return_value = self.mock_order order_controller = OrderController(self.request_context) # Act result = order_controller.collect_order() # Assert assert result.status_code == 200 assert result.get_json()['msg'] == 'Order successfully collected'
def test_delete_order_ok_response(self, mock_order_repo_update, mock_order_repo_get, mock_auth_user): '''Test delete_order when the user deleting the order is not the owner. ''' # Arrange with self.app.app_context(): mock_auth_user.return_value = 1 mock_order_repo_get.return_value = self.mock_order mock_order_repo_update.return_value = self.mock_order order_controller = OrderController(self.request_context) # Act result = order_controller.delete_order(1) # Assert assert result.status_code == 200 assert result.get_json()['msg'] == 'Order deleted'
def test_delete_order_when_user_deleting_order_is_not_the_owner( self, mock_order_repo_get, mock_auth_user): '''Test delete_order when the user deleting the order is not the owner. ''' # Arrange with self.app.app_context(): mock_auth_user.return_value = 2 mock_order_repo_get.return_value = self.mock_order order_controller = OrderController(self.request_context) # Act result = order_controller.delete_order(1) # Assert assert result.status_code == 403 assert result.get_json()['msg'] == 'You cannot delete an order' \ ' that is not yours'
def test_update_order_when_order_doesnot_exist(self, mock_order_repo_get, mock_meal_item_repo_get, mock_request_params): '''Test update_order when the order doesnot exists. ''' # Arrange with self.app.app_context(): mock_request_params.return_value = ('2019-02-12', 'web', [], None) mock_meal_item_repo_get.return_value = Mock() mock_order_repo_get.return_value = None order_controller = OrderController(self.request_context) # Act result = order_controller.update_order(1) # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Invalid or incorrect order_id ' \ 'provided'
def test_update_order_when_order_has_been_deleted(self, mock_order_repo_get, mock_meal_item_repo_get, mock_request_params): '''Test update_order when the order has been deleted. ''' # Arrange with self.app.app_context(): mock_request_params.return_value = ('2019-02-12', 'web', [], None) mock_meal_item_repo_get.return_value = Mock() mock_order_repo_get.return_value.is_deleted = True order_controller = OrderController(self.request_context) # Act result = order_controller.update_order(1) # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'Order has already been deleted'
def test_collect_order_when_user_has_no_order_for_date( self, mock_find_first, mock_request_params): '''Test collect_order when user has no order for date. ''' # Arrange with self.app.app_context(): mock_find_first.return_value = None mock_user_id = Mock(return_value=1) fake_order_id = Mock(return_value=1) mock_request_params.return_value = (mock_user_id, fake_order_id, '2019-02-13') order_controller = OrderController(self.request_context) # Act result = order_controller.collect_order() # Assert assert result.status_code == 400 assert result.get_json()['msg'] == f'User has no {fake_order_id}' \ ' order for the date.'
def test_get_order_ok_response(self, mock_get_user_by_email_or_id, mock_get): '''Test get_order OK response. ''' # Arrange with self.app.app_context(): mock_get.return_value = self.mock_order mock_get_user_by_email_or_id.return_value = { 'id': '1', 'mail': '*****@*****.**', 'first_name': 'Joseph', 'last_name': 'Serunjogi' } order_controller = OrderController(self.request_context) # Act result = order_controller.get_order(1) # Assert assert result.status_code == 200 assert result.get_json()['msg'] == 'OK'
def test_create_order_when_date_booked_is_in_past( self, mock_current_time_by_zone, mock_get, mock_user_has_order, mock_request_params, mock_get_location, mock_user ): '''Test create_date when the date booked is in the past. ''' mock_user.return_value = { 'id': 1, 'mail': '*****@*****.**', 'first_name': 'Joseph', 'last_name': 'Serunjogi' } mock_get_location.return_value = Mock() mock_request_params.return_value = ( '2019-02-01', 'web', 'lunch', [self.mock_meal_item, ], 1 ) mock_user_has_order.return_value = False mock_get.return_value = Location( id=1, created_at=datetime.now, updated_at=datetime.now(), is_deleted=False, name='mock', zone='+3' ) mock_current_time_by_zone.return_value = Mock() order_controller = OrderController(self.request_context) # Act result = order_controller.create_order() # Assert assert result.status_code == 400 assert result.get_json()['msg'] == 'You are not allowed to book for ' \ 'a date in the past'
def admin_orders(*args, **kwargs): user = kwargs['user'] if user.role_id != ROLE['admin']: return Response(json.dumps({'message': 'unauthorized'}), status=401, mimetype='application/json') order_user = request.json['order_user'] if 'order_user' in request.json else None user = db.session.query( User).filter(or_(User.username.like(order_user), User.email.like(order_user))).first() if user is None: return json.dumps({ 'data': None, 'meta': { 'success': False, 'message': 'User with specified email or username not found' } }) return OrderController.create(request, user.as_dict())
from app.blueprints.base_blueprint import Blueprint, BaseBlueprint, Security, request from app.controllers.order_controller import OrderController from app.utils.auth import Auth from flasgger import swag_from url_prefix = '{}/orders'.format(BaseBlueprint.base_url_prefix) order_blueprint = Blueprint('order', __name__, url_prefix=url_prefix) order_controller = OrderController(request) @order_blueprint.route('/', methods=['GET']) @Auth.has_permission('view_orders') @swag_from('documentation/get_all_orders.yml') def list_order(): return order_controller.list_orders() @order_blueprint.route('/<date:start_date>', methods=['GET']) @Auth.has_permission('view_orders') @swag_from('documentation/get_orders_by_date.yml') def list_orders_date(start_date): return order_controller.list_orders_date(start_date) @order_blueprint.route('/<date:start_date>/<date:end_date>', methods=['GET']) @Auth.has_permission('view_orders') @swag_from('documentation/get_orders_by_date_range.yml') def list_orders_date_range(start_date, end_date): return order_controller.list_orders_date_range(start_date, end_date)
def ban_order(id, *args, **kwargs): return OrderController.ban(id)
def orders_id(id, *args, **kwargs): if(request.method == 'GET'): return OrderController.show(id) elif(request.method == 'DELETE'): return OrderController.delete(id)
def admin_verify_order(id, *args, **kwargs): return OrderController.verify_order(id, request)
def admin_verifyorders(*args, **kwargs): return OrderController.unverified_order()
def orders(*args, **kwargs): user_id = kwargs['user'].id if(request.method == 'GET'): return OrderController.index(user_id) elif(request.method == 'POST'): return OrderController.create(request, user_id)