Skip to content

Commit

Permalink
fix tests part 4
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgaspar committed May 31, 2024
1 parent e1f321a commit 4bebf80
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 33 deletions.
6 changes: 5 additions & 1 deletion examples/quickhowto/app/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
from flask import Flask
import logging

from flask import Flask
from flask_appbuilder.extensions import db
from .views import ContactModelView, ContactTimeChartView, GroupModelView
from .extensions import appbuilder
from .utils import fill_gender


logging.basicConfig(format="%(asctime)s:%(levelname)s:%(name)s:%(message)s")
logging.getLogger().setLevel(logging.DEBUG)

def create_app() -> Flask:
app = Flask(__name__)
app.config.from_object("config")
Expand Down
2 changes: 1 addition & 1 deletion flask_appbuilder/baseviews.py
Original file line number Diff line number Diff line change
Expand Up @@ -1296,7 +1296,7 @@ def _edit(self, pk):
self.datamodel.edit(item)
self.post_update(item)
flash(self.edit_row_message, "success")
except Exception as e:
except Exception:
flash(self.database_error_message, "danger")
finally:
return None
Expand Down
13 changes: 4 additions & 9 deletions flask_appbuilder/models/sqla/filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,7 @@ def apply(self, query, value):
try:
rel_obj = self.datamodel.get_related_obj(self.column_name, value)
except SQLAlchemyError as exc:
logging.warning(
"Filter exception for %s with value %s, will not apply", field, value
)
logging.warning("Filter exception for %s will not apply", field)
try:
self.datamodel.session.rollback()
except SQLAlchemyError:
Expand All @@ -213,9 +211,7 @@ def apply(self, query, value):
try:
rel_obj = self.datamodel.get_related_obj(self.column_name, value)
except SQLAlchemyError as exc:
logging.warning(
"Filter exception for %s with value %s, will not apply", field, value
)
log.warning("Filter exception for %s will not apply", field)
try:
self.datamodel.session.rollback()
except SQLAlchemyError:
Expand Down Expand Up @@ -252,10 +248,9 @@ def apply_item(self, query, field, value_item):
if rel_obj:
return query.filter(field.contains(rel_obj))
else:
log.error(
"Related object for column: %s, value: %s return Null",
log.warning(
"Related object for column: %s returned Null",
self.column_name,
value_item,
)

return query
Expand Down
22 changes: 11 additions & 11 deletions tests/test_menu.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import logging
import os

from flask_appbuilder import SQLA
from flask_appbuilder.models.sqla.interface import SQLAInterface

from .base import FABTestCase
from .const import MAX_PAGE_SIZE, PASSWORD_ADMIN, USERNAME_ADMIN
from .sqla.models import Model1
from tests.base import FABTestCase
from tests.const import MAX_PAGE_SIZE, PASSWORD_ADMIN, USERNAME_ADMIN
from tests.sqla.models import Model1

log = logging.getLogger(__name__)

Expand All @@ -22,8 +20,9 @@ def setUp(self):
self.app.config.from_object("tests.config_api")
self.app.config["FAB_API_MAX_PAGE_SIZE"] = MAX_PAGE_SIZE

self.db = SQLA(self.app)
self.appbuilder = AppBuilder(self.app, self.db.session)
self.ctx = self.app.app_context()
self.ctx.push()
self.appbuilder = AppBuilder(self.app)
self.create_default_users(self.appbuilder)

class Model1View(ModelView):
Expand All @@ -44,6 +43,7 @@ class Model1ViewDynamic(ModelView):
)

def tearDown(self):
self.ctx.pop()
self.appbuilder = None
self.app = None
self.db = None
Expand Down Expand Up @@ -127,11 +127,11 @@ def test_menu_api_limited(self):
self.browser_logout(client)

# Revert test data
self.appbuilder.get_session.delete(
self.appbuilder.session.delete(
self.appbuilder.sm.find_user(username=limited_user)
)
self.appbuilder.get_session.delete(self.appbuilder.sm.find_role(limited_role))
self.appbuilder.get_session.commit()
self.appbuilder.session.delete(self.appbuilder.sm.find_role(limited_role))
self.appbuilder.session.commit()

def test_menu_api_public(self):
"""
Expand Down Expand Up @@ -172,7 +172,7 @@ def test_menu_api_public(self):
# Revert test data
role = self.appbuilder.sm.find_role("Public")
role.permissions = []
self.appbuilder.get_session.commit()
self.appbuilder.session.commit()

def test_redirect_after_logout(self):
"""
Expand Down
19 changes: 8 additions & 11 deletions tests/test_mvc.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import json
import logging
from typing import Set
from unittest import mock

from flask import Flask, make_response, redirect, session
from flask_appbuilder import AppBuilder
Expand Down Expand Up @@ -174,11 +175,13 @@ def test_list_filter_m_m_invalid_object(self):
self.browser_login(c, USERNAME_ADMIN, PASSWORD_ADMIN)

# Roles doesn't exists
rv = c.get("/users/list/?_flt_0_roles=aaaa", follow_redirects=True)
self.assertEqual(rv.status_code, 200)
if self.appbuilder.session.get_bind().name != "mysql":
data = rv.data.decode("utf-8")
self.assertIn("An error occurred", data)
with mock.patch("flask_appbuilder.models.sqla.filters.log") as log_patch:
rv = c.get("/users/list/?_flt_0_roles=aaaa", follow_redirects=True)
self.assertEqual(rv.status_code, 200)
if self.appbuilder.session.get_bind().name != "mysql":
log_patch.warning.assert_called_with(
"Related object for column: %s returned Null", "roles"
)

def test_list_filter_o_m_invalid_object_type(self):
"""
Expand All @@ -189,9 +192,6 @@ def test_list_filter_o_m_invalid_object_type(self):

rv = c.get("/model2view/list/?_flt_0_group=aaaa", follow_redirects=True)
self.assertEqual(rv.status_code, 200)
if self.appbuilder.session.get_bind().name != "mysql":
data = rv.data.decode("utf-8")
self.assertIn("An error occurred", data)

def test_list_filter_not_o_m_invalid_object_type(self):
"""
Expand All @@ -203,9 +203,6 @@ def test_list_filter_not_o_m_invalid_object_type(self):
# Roles doesn't exists
rv = c.get("/model2view/list/?_flt_1_group=aaaa", follow_redirects=True)
self.assertEqual(rv.status_code, 200)
if self.appbuilder.session.get_bind().name != "mysql":
data = rv.data.decode("utf-8")
self.assertIn("An error occurred", data)

def test_list_filter_unknown_column(self):
"""
Expand Down

0 comments on commit 4bebf80

Please sign in to comment.