def test_get_by_reseller(self): purchase = PurchaseModel.get(1) assert purchase != None purchase = PurchaseModel.get_by_reseller('74936635057') assert purchase != None
def get(self): current_user = jwt.decode(request.headers['Authorization'], environ.get('JWT_SECRET_KEY'), options={'verify_exp': False}) if Roles().enum_to_name(current_user['sub']['role']) == 'admin': if 'id' in request.args: item = PurchaseModel.get(request.args['id']) item = serialize_model(item) item['cashback'] = calculate_unit_cashback(item['value']) return item elif 'cpf' in request.args: itens = PurchaseModel.get_by_reseller(request.args['cpf']) itens = serialize_model_list(itens) for item in itens: item['cashback'] = calculate_unit_cashback(item['value']) return itens list = PurchaseModel.list() list = serialize_model_list(list) for item in list: item['cashback'] = calculate_unit_cashback(item['value']) return list else: if 'id' in request.args: item = PurchaseModel.get_by_reseller(current_user['sub']['id']) item = serialize_model(item) if item['id'] == request.args['id']: return item else: return list = PurchaseModel.get_by_reseller(current_user['sub']['id']) return list
def test_new_purchase(self): assert len(PurchaseModel.list()) == 0 purchase = PurchaseModel() purchase.code = 1 purchase.value = 1000 purchase.id_reseller = 2 purchase.status = "Em validação" purchase.save() assert len(PurchaseModel.list()) != 0
def delete(self): try: if 'id' in request.args: item = PurchaseModel.delete(request.args['id']) return "success", 201 return "No ID", 401 except: return "error", 401
def post(self, name): company = CompanyModel.find_by_name(name) if company: data = Purchase.parser.parse_args() purchase_date = datetime.strptime(data['purchase_date'], "%Y-%m-%d") purchase = PurchaseModel(data['price'], data['quantity'], company.id, purchase_date) try: purchase.save() except: return { "message": "An error occurred inserting the purchase." }, 500 else: return {"message": "Company not found."}, 204 return purchase.json(), 201
def first_purchase(): if UserModel.get_by_cpf("74936635057") == None: first_reseller_user() if PurchaseModel.get_by_reseller(2) != None: return new_purchase = PurchaseModel() new_purchase.code = 1 new_purchase.value = 1000 new_purchase.id_reseller = 1 new_purchase.status = "Em validação" new_purchase.save() return
def post(self): try: data = request.get_json() item = PurchaseModel() current_user = jwt.decode(request.headers['Authorization'], environ.get('JWT_SECRET_KEY'), options={'verify_exp': False}) if Roles().enum_to_name(current_user['sub']['role']) == 'admin': if check_params(['code', 'value', 'cpf'], data.keys()) == False: return "Parâmetros incorretos", 401 if check_cpf(data['cpf']) is False: return 'CPF incorreto', 401 if UserModel.get_by_cpf(data['cpf']) == None: return 'CPF não registrado', 401 for parameter in data: setattr(item, parameter, data[parameter]) item.id_reseller = UserModel.get_by_cpf(data['cpf']).id item.status = "Em validação" if data['cpf'] not in [ '153.509.460-56', '15350946056' ] else "Aprovado" item.save() return "success", 201 else: if check_params(['code', 'value'], data.keys()) == False: return "Parâmetros incorretos", 401 for parameter in data: setattr(item, parameter, data[parameter]) item.reseller = UserModel.get_by_cpf( current_user['sub']['cpf']) item.status = "Em validação" if current_user['sub'][ 'cpf'] not in ['153.509.460-56', '15350946056' ] else "Aprovado" item.save() return "success", 201 except: return "error", 401
def get(self): current_user = jwt.decode(request.headers['Authorization'], environ.get('JWT_SECRET_KEY'), options={'verify_exp': False}) if Roles().enum_to_name(current_user['sub']['role']) == 'admin': if 'cpf' in request.args and 'month' in request.args and 'year' in request.args: user = UserModel.get_by_cpf(request.args['cpf']) if user == None: return "Revendedor não encontrado" itens = PurchaseModel.get_by_reseller(user.id) itens = serialize_model_list(itens) itens = list(filter(lambda item: datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").month == int(request.args['month']) and datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").year == int(request.args['year']) and item['status'] == "Aprovado", itens)) return {"purchases": itens, "cashback_by_month": calculate_multi_cashback(itens)} else: if 'month' in request.args and 'year' in request.args: itens = PurchaseModel.get_by_reseller(int(current_user['sub']['id'])) itens = serialize_model_list(itens) itens = list(filter(lambda item: datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").month == int(request.args['month']) and datetime.strptime(item['created_at'], "%Y-%m-%d %H:%M:%S.%f").year == int(request.args['year']) and item['status'] == "Aprovado", itens)) return {"purchases": itens, "cashback_by_month": calculate_multi_cashback(itens)} return "Parâmetros incorretos", 401
def test_post_purchase_endpoint(self, client): auth = client.post( '/api/authentication', json={ 'email': '*****@*****.**', 'password': '******'}) access_decode = json.loads(auth.data.decode()) purchases = len(PurchaseModel.get_by_reseller(2)) res = client.post( '/api/purchase', json={ 'value': 1000, 'code': 30}, headers={ 'Authorization': access_decode['token']}) assert res.status_code == 201 assert json.loads(res.data) == 'success' assert len(PurchaseModel.get_by_reseller(2)) == purchases + 1
def put(self): try: data = request.get_json() item = PurchaseModel.get(data['id']) if item == None: return "ID incorreto" if data['status'] not in ['Aprovado', 'Reprovado', 'Em validação']: return "Status informado incorreto. Deve ser: Aprovado, Reprovado ou Em validação" item.status = data['status'] item.save() return "success", 201 except: return "error", 401
def test_delete_purchase(self): purchase = PurchaseModel() purchase.code = 2 purchase.value = 1000 purchase.id_reseller = 2 purchase.status = "Em validação" purchase.save() purchases = len(PurchaseModel.list()) PurchaseModel.delete(2) assert purchases - 1 == len(PurchaseModel.list())