Exemple #1
0
    def test_delivery_cant_accept_favours(self, set_order_price):
        from src.auth.models.user_table import NormalUserModel
        from src.auth.models.user_table import DeliveryUserModel
        from src.auth.services.order_service import OrderService
        from src.auth.services.order_ofert_service import OrderOfferService
        from src.auth.auth_exception import NotFoundException

        set_order_price.return_value = True
        CANTIDAD_FAVOUR_POINTS = 20
        user = NormalUserModel(user_data)
        user.save()
        delivery = DeliveryUserModel(delivery_data)
        delivery.save()
        order_service = OrderService()
        order_data["user_id"] = user.user_id
        order_data["payWithPoints"] = True
        order_data["favourPoints"] = CANTIDAD_FAVOUR_POINTS
        order = order_service.create_order(order_data)
        assert order.state == 'created'
        order_ofert_service = OrderOfferService()
        order_ofert = order_ofert_service.create_order_ofert(order_ofert_data)
        with self.assertRaisesRegex(
                NotFoundException,
                "ID invalido: Solo los usuarios comunes pueden aceptar favores"
        ):
            order_ofert_service.update_offer_state(delivery.user_id,
                                                   order.order_id, 'accepted')
Exemple #2
0
 def create_normal_user(self, user_data):
     from src.auth.models.user_table import NormalUserModel
     try:
         user_data["password"] = self._encrypt_password(
             user_data["password"])
     except KeyError:
         pass
     user = NormalUserModel(user_data)
     user.save()
     return user
Exemple #3
0
 def test_order_wit_discount_subtract_user_favour_pounts(self):
     from src.auth.models.user_table import NormalUserModel, DeliveryUserModel
     from src.auth.services.order_service import OrderService
     from src.auth.services.order_ofert_service import OrderOfferService
     from src.auth.models.product_table import ProductModel
     #Agrego dos productos
     p1 = ProductModel({
         "shop_id": 1,
         "name": "Hamburguesa con queso",
         "description":
         "Hamburguesa con queso. Lechuga y tomate opcionales",
         "price": 120
     })
     p2 = ProductModel({
         "shop_id": 2,
         "name": "Hamburguesa normal",
         "description":
         "Hamburguesa con queso. Lechuga y tomate opcionales",
         "price": 90
     })
     p1.save()
     p2.save()
     #Creo el user y el delivery
     user = NormalUserModel(user_data)
     user.save()
     delivery = DeliveryUserModel(delivery_data)
     delivery.save()
     assert user.favourPoints == 30
     #Creo orden
     order_data_test = order_data.copy()
     order_data_test["products"] = [{
         "product_id": p1.id,
         "units": 2
     }, {
         "product_id": p2.id,
         "units": 1
     }]
     order_data_test["discount"] = True
     order_data_test["user_id"] = user.user_id
     order_data_test["payWithPoints"] = False
     order_service = OrderService()
     order = order_service.create_order(order_data_test)
     #Oferto a delivery
     order_ofert_service = OrderOfferService()
     order_ofert_data["order_id"] = order.order_id
     order_ofert_data["delivery_id"] = delivery.user_id
     order_ofert_id = order_ofert_service.create_order_ofert(
         order_ofert_data)
     order_ofert_service.update_offer_state(delivery.user_id,
                                            order_ofert_id, 'accepted')
     assert order.state == 'onWay'
     #Completo orden
     order_service.order_delivered(order.order_id)
     assert user.favourPoints == 20
Exemple #4
0
    def test_complete_order_gain_favour_points(self, set_order_price):
        from src.auth.models.user_table import NormalUserModel
        from src.auth.models.user_table import DeliveryUserModel
        from src.auth.services.order_service import OrderService
        from src.auth.services.order_ofert_service import OrderOfferService
        from src.auth.auth_exception import NotFoundException

        set_order_price.return_value = True
        CANTIDAD_FAVOUR_POINTS = 20
        user = NormalUserModel(user_data)
        user.save()
        user_old_favour_points = user.favourPoints
        user_d = NormalUserModel(user2_data)
        user_d.save()
        user_d_old_favour_points = user.favourPoints
        order_service = OrderService()
        order_data["user_id"] = user.user_id
        order_data["payWithPoints"] = True
        order_data["favourPoints"] = CANTIDAD_FAVOUR_POINTS
        order = order_service.create_order(order_data)
        assert order.state == 'created'
        order_ofert_service = OrderOfferService()
        order_ofert_id = order_ofert_service.create_favour_offer(
            favour_offer_data)
        order_ofert_service.update_favour_offer_state(user_d.user_id,
                                                      order_ofert_id,
                                                      'accepted')
        assert order.state == 'onWay'
        #Orden entregada
        order_service.order_delivered(order.order_id)
        assert user.favourPoints == user_old_favour_points - CANTIDAD_FAVOUR_POINTS
        assert user_d.favourPoints == user_d_old_favour_points + CANTIDAD_FAVOUR_POINTS
Exemple #5
0
 def upgrade_user_subscription(self, _id):
     from src.auth.models.user_table import NormalUserModel
     user_data = self.sqlachemy_to_dict(NormalUserModel.get_user(_id))
     user_data['suscripcion'] = 'premium'
     return NormalUserModel.get_user(_id).update(user_data)
Exemple #6
0
 def update_normal_user(self, _id, data):
     from src.auth.models.user_table import NormalUserModel
     user_data = self.sqlachemy_to_dict(NormalUserModel.get_user(_id))
     user_data.update(data)
     return NormalUserModel.get_user(_id).update(user_data)
Exemple #7
0
 def delete_user(self, _id):
     from src.auth.models.user_table import NormalUserModel
     return NormalUserModel.get_user(_id).delete()
Exemple #8
0
 def put_making_favours(self, id, make_favours):
     from src.auth.models.user_table import NormalUserModel
     user = NormalUserModel.get_instance(id)
     user.make_favours = make_favours
     user.save()
     return user
Exemple #9
0
 def get_normal_user(self, _id, dict_format=False):
     from src.auth.models.user_table import NormalUserModel
     user = NormalUserModel.get_user(_id)
     if dict_format:
         return self.sqlachemy_to_dict(user)
     return user
Exemple #10
0
 def get_historical_user_orders(self, user_id):
     from src.auth.models.order_table import OrderModel
     from src.auth.models.user_table import NormalUserModel
     NormalUserModel.get_user(user_id)
     return OrderModel.query.filter(OrderModel.delivery_id == user_id).filter(OrderModel.state == 'delivered').count()
Exemple #11
0
 def test_get_users_work_favours_ordered(self):
     from src.auth.models.user_table import NormalUserModel
     from src.auth.services.user_service import UserService
     from src.auth.services.direc_service import DirecService
     user = NormalUserModel(user_data)
     user.latitude = -34.849859
     user.longitude = -58.386222
     user.save()
     user_d = NormalUserModel(user2_data)
     user_d.latitude = -34.859575
     user_d.longitude = -58.380182
     user_d.save()
     user_service = UserService()
     users = user_service.get_available_users_favours()
     assert users[0]["user_id"] == 1
     assert len(users) == 2
     direc_service = DirecService()
     shop = {"latitude": -34.859138, "longitude": -58.387252}
     users = direc_service.get_nearly_deliverys(shop, users)
     #Al ordenarlos el primer usuario tendria que ser el usuario 2
     assert users[0]["user_id"] == 2