Esempio n. 1
0
    def test_create_order_rating_when_engagement_doesnot_exist(
            self, mock_vendor_engagement_repo_get, mock_meal_item_repo_get,
            mock_auth_user, mock_vendor_rating_controller_request_params):
        '''Test create order rating when engagement does not exist.
        '''
        # Arrange
        with self.app.app_context():
            mock_meal_item = MealItem(id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now(),
                                      meal_type='main',
                                      name='Mock meal',
                                      image='',
                                      location_id=1)
            mock_vendor_rating_controller_request_params.return_value = (None,
                                                                         None,
                                                                         None,
                                                                         None,
                                                                         3,
                                                                         None,
                                                                         None)
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_vendor_engagement_repo_get.return_value = None
            vendor_rating_controller = VendorRatingController(
                self.request_context)

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'Engagement with this id is' \
                ' not found'
Esempio n. 2
0
    def test_create_order_rating_when_meal_item_doesnot_exist(
            self, mock_meal_item_repo_get, mock_auth_user,
            mock_vendor_rating_controller_request_params):
        '''Test create_order_rating when meal item does not exist.
        '''
        # Arrange
        with self.app.app_context():
            mock_vendor_rating_controller_request_params.return_value = (None,
                                                                         None,
                                                                         None,
                                                                         None,
                                                                         3,
                                                                         None,
                                                                         None)
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = None
            vendor_rating_controller = VendorRatingController(
                self.request_context)

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'Meal item with this id not ' \
                'found'
Esempio n. 3
0
    def test_create_order_rating_when_meal_already_rated(
            self, mock_vendor_engagement_repo_get, mock_meal_item_repo_get,
            mock_auth_user, mock_vendor_rating_controller_request_params,
            mock_vendor_rating_repo_get_unpaginated):
        '''Test create_order_rating when order has already been rated.
        '''
        # Arrange
        with self.app.app_context():
            mock_meal_item = MealItem(id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now(),
                                      meal_type='main',
                                      name='Mock meal',
                                      image='',
                                      location_id=1)
            mock_vendor_engagement = VendorEngagement(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                vendor_id=1,
                location_id=1,
                start_date=datetime.now(),
                end_date=(datetime.now() + timedelta(days=5)),
                status=1,
                termination_reason='Mock reason')
            mock_vendor_rating = VendorRating(id=1,
                                              created_at=datetime.now(),
                                              updated_at=datetime.now(),
                                              vendor_id=1,
                                              user_id='user_id',
                                              comment='Mock comment',
                                              service_date=datetime.now(),
                                              rating=3.0,
                                              channel='web',
                                              rating_type='meal',
                                              type_id=1,
                                              engagement_id=1,
                                              main_meal_id=1)
            service_date = datetime.strftime(
                (datetime.now() - timedelta(1)).date(), '%Y-%m-%d')
            mock_vendor_rating_controller_request_params.return_value = (
                None, None, None, None, 3, service_date, None)
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_vendor_engagement_repo_get.return_value = \
                mock_vendor_engagement
            mock_vendor_rating_repo_get_unpaginated.return_value = [
                mock_vendor_rating,
            ]
            vendor_rating_controller = VendorRatingController(
                self.request_context)

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'You have already rated' \
                ' this meal'
Esempio n. 4
0
    def test_create_order_rating_when_order_already_rated(
            self, mock_vendor_engagement_repo_get, mock_meal_item_repo_get,
            mock_auth_user, mock_vendor_rating_controller_request_params,
            mock_order_repo_get):
        '''Test create_order_rating when order has already been rated.
        '''
        # Arrange
        with self.app.app_context():
            mock_meal_item = MealItem(id=1,
                                      created_at=datetime.now(),
                                      updated_at=datetime.now(),
                                      meal_type='main',
                                      name='Mock meal',
                                      image='',
                                      location_id=1)
            mock_vendor_engagement = VendorEngagement(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                vendor_id=1,
                location_id=1,
                start_date=datetime.now(),
                end_date=(datetime.now() + timedelta(days=5)),
                status=1,
                termination_reason='Mock reason')
            mock_order = Order(id=1,
                               created_at=datetime.now(),
                               updated_at=datetime.now(),
                               user_id='user_id',
                               date_booked_for=datetime.now(),
                               date_booked=datetime.now(),
                               channel='web',
                               meal_period='lunch',
                               order_status='booked',
                               has_rated=True,
                               menu_id=1,
                               location_id=1)
            mock_vendor_rating_controller_request_params.return_value = (1,
                                                                         None,
                                                                         None,
                                                                         None,
                                                                         3,
                                                                         None,
                                                                         None)
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_vendor_engagement_repo_get.return_value = \
                mock_vendor_engagement
            mock_order_repo_get.return_value = mock_order
            vendor_rating_controller = VendorRatingController(
                self.request_context)

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'This order has been rated'
    def test_create_order_rating_when_order_doesnot_exist(
        self,
        mock_vendor_engagement_repo_get,
        mock_meal_item_repo_get,
        mock_auth_user,
        mock_vendor_rating_controller_request_params,
        mock_order_repo_get
    ):
        '''Test create_order_rating when order doesnot exist.
        '''
        # Arrange
        with self.app.app_context():
            mock_meal_item = MealItem(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                meal_type='main',
                name='Mock meal',
                image='',
                location_id=1
            )
            mock_vendor_engagement = VendorEngagement(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                vendor_id=1,
                location_id=1,
                start_date=datetime.now(),
                end_date=(datetime.now() + timedelta(days=5)),
                status=1,
                termination_reason='Mock reason'
            )
            mock_vendor_rating_controller_request_params.return_value = (
                1, None, None, None, 3, None, None
            )
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_vendor_engagement_repo_get.return_value = \
                mock_vendor_engagement
            mock_order_repo_get.return_value = None
            vendor_rating_controller = VendorRatingController(
                self.request_context
            )

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 400
            assert result.get_json()['msg'] == 'Order with this id is not' \
                ' found'
    def test_create_order_rating_when_rating_invalid(
        self,
        mock_vendor_rating_controller_request_params
    ):
        '''Test create_order_rating when rating is invalid.
        '''
        # Arrange
        with self.app.app_context():
            mock_vendor_rating_controller_request_params.return_value = (
                None, None, None, None, 6, None, None
            )
            vendor_rating_controller = VendorRatingController(
                self.request_context
            )

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            result.status_code == 400
            result.get_json()['msg'] == 'Rating must be between 1 and 5' \
                ', inclusive'
    def test_create_order_rating_ok_response(
        self,
        mock_vendor_engagement_repo_get,
        mock_meal_item_repo_get,
        mock_auth_user,
        mock_vendor_rating_controller_request_params,
        mock_order_repo_get,
        mock_vendor_repo_update_average_rating
    ):
        '''Test create_order_rating when order has already been rated.
        '''
        # Arrange
        vendor = VendorFactory()
        location = LocationFactory()
        vendor_engagement = VendorEngagementFactory()
        meal_item = MealItemFactory()
        menu = MenuFactory()

        with self.app.app_context():
            mock_meal_item = MealItem(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                meal_type='main',
                name='Mock meal',
                image='',
                location_id=location.id
            )
            mock_vendor_engagement = VendorEngagement(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                vendor_id=vendor.id,
                location_id=location.id,
                start_date=datetime.now(),
                end_date=(datetime.now() + timedelta(days=5)),
                status=1,
                termination_reason='Mock reason'
            )
            mock_order = Order(
                id=1,
                created_at=datetime.now(),
                updated_at=datetime.now(),
                user_id='user_id',
                date_booked_for=datetime.now(),
                date_booked=datetime.now(),
                channel='web',
                meal_period='lunch',
                order_status='booked',
                has_rated=False,
                menu_id=menu.id,
                location_id=location.id
            )

            mock_vendor_rating_controller_request_params.return_value = (
                2, meal_item.id, vendor_engagement.id, 'Mock comment', 3, '2019-02-06', 'web'
            )
            mock_auth_user.return_value = 1
            mock_meal_item_repo_get.return_value = mock_meal_item
            mock_vendor_engagement_repo_get.return_value = \
                mock_vendor_engagement
            mock_order_repo_get.return_value = mock_order
            vendor_rating_controller = VendorRatingController(
                self.request_context
            )
            mock_vendor_repo_update_average_rating.return_value = None

            # Act
            result = vendor_rating_controller.create_order_rating()

            # Assert
            assert result.status_code == 201
            assert result.get_json()['msg'] == 'Rating successful'