def test_localization_get_dishes_by_type_and_name(self): """Тест SQL запроса на получение определенного типа блюд, совпадающих с вхождением названия с локализацией""" with self.app.test_request_context(): expected = tuple(self.dishes[1:3]) result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, 'C') self.assertEqual(expected, result) expected = (self.dishes[2],) result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, 'Christmas') self.assertEqual(expected, result) expected = () result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, 'к') self.assertEqual(expected, result)
def test_localization_get_dishes_by_type(self): """Тест SQL запроса на получение определенного типа блюд с локализацией""" with self.app.test_request_context(): result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, '') expected = tuple(self.dishes[1:3]) self.assertEqual(expected, result) result = search_dishes(TypesOfDish.MEAT_DISHES, '') expected = (self.dishes[0],) self.assertEqual(expected, result) result = search_dishes(TypesOfDish.SAUCES_AND_MARINADES, '') expected = () self.assertEqual(expected, result)
def check_delete_query(self, dish_name): """Чек POST запроса на удаление блюда по его названию""" r = self.client.post('/delete', data={'dish_name': dish_name}) result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, dish_name) self.assertEqual(r.get_data(as_text=True), '{}\n') self.assertEqual(result, ()) self.assertEqual(r.status_code, 200)
def test_localization_csrf_error(self): """Тест выдачи CSRF ошибки для локализации""" with self.app.test_request_context(): dish_name = 'Christmas cupcake with tangerines' r = self.client.post('/delete', data={'dish_name': dish_name}) result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, dish_name) expected = (self.dishes[2],) self.assertEqual(result, expected) self.assertTrue(r.headers.get('X-CSRFToken') is None) self.assertEqual(r.status_code, 400) self.assertTrue('<title>Csrf Error</title>' in r.get_data(as_text=True)) self.assertTrue( "<h1>Sorry, on our page arise CSRF error. Sorry for inconvenience.</h1>" in r.get_data(as_text=True))
def test_csrf_error(self): """Тестирование ошибки CSRF Error 400 (Bad Request)""" with self.app.test_request_context(): dish_name = 'Кекс рождественский с мандаринами' r = self.client.post('/delete', data={'dish_name': dish_name}) result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, dish_name) expected = (self.dishes[2], ) self.assertTrue(r.get_json() is None) self.assertEqual(result, expected) self.assertTrue(r.headers.get('X-CSRFToken') is None) self.assertEqual(r.status_code, 400) self.assertTrue('<title>Csrf Error</title>' in r.get_data( as_text=True)) self.assertTrue( "<h1>К сожалению, на странице произошла CSRF-ошибка. Приносим извинения за доставленные неудобства</h1>" in r.get_data(as_text=True))
def show_dishes(type_of_dishes: str) -> str: """Функция показа странички для любых типов блюд""" current_app.logger.debug(f'Enter into {show_dishes.__name__} with params: type_of_dishes={type_of_dishes}') dish_search_form = DishSearchForm(request.args) query_title = request.args.get('dish_name', '') dishes_info = search_dishes(TypesOfDish[type_of_dishes.upper()], query_title) return minify(render_template('main/dish_page.html', current_user=current_user, units_of_measurement=UnitsOfMeasurement, selected_dish=TypesOfDish[type_of_dishes.upper()].value, type_of_dishes=type_of_dishes, dishes_info=dishes_info, dish_search_form=dish_search_form, PORTIONS_COUNT=PORTIONS_COUNT, DELETE_DISH=DELETE_DISH, DISH_IMAGE=DISH_IMAGE, DESCRIPTION=DESCRIPTION, PREPARATION_TIME=PREPARATION_TIME, COOKING_TIME=COOKING_TIME, LITERATURE_URL=LITERATURE_URL, IMPLEMENT=IMPLEMENT, STEP_OF_COOK=STEP_OF_COOK, INGREDIENTS=INGREDIENTS))
def test_localization_delete_dish_by_name(self): """Тест SQL запроса на удаление блюда по его полному названию с локализацией""" with self.app.test_request_context(): delete_dish('Christmas cupcake with tangerines') result = search_dishes(TypesOfDish.SWEET_FOOD_AND_DRINKS, 'Christmas cupcake with tangerines') self.assertEqual(result, ())