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')
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
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
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
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)
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)
def delete_user(self, _id): from src.auth.models.user_table import NormalUserModel return NormalUserModel.get_user(_id).delete()
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
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
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()
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