Commit 527de698 authored by Serge S. Koval's avatar Serge S. Koval

Test fixes

parent 0bf5ac48
......@@ -25,6 +25,9 @@ if not PY2:
iteritems = lambda d: iter(d.items())
def as_unicode(text):
if isinstance(text, bytes):
return text.decode('utf-8')
return str(text)
from functools import reduce
......
......@@ -339,7 +339,7 @@ class ModelView(BaseModelView):
form.populate_obj(model)
self.on_model_change(form, model)
model.save()
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to create model')
......@@ -362,7 +362,7 @@ class ModelView(BaseModelView):
form.populate_obj(model)
self.on_model_change(form, model)
model.save()
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to update model')
......@@ -383,7 +383,7 @@ class ModelView(BaseModelView):
self.on_model_delete(model)
model.delete()
return True
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to delete model. %(error)s', error=str(ex)),
'error')
logging.exception('Failed to delete model')
......@@ -412,6 +412,6 @@ class ModelView(BaseModelView):
'%(count)s models were successfully deleted.',
count,
count=count))
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to delete models. %(error)s', error=str(ex)),
'error')
......@@ -341,7 +341,7 @@ class ModelView(BaseModelView):
# For peewee have to save inline forms after model was saved
save_inline(form, model)
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to create model')
return False
......@@ -358,7 +358,7 @@ class ModelView(BaseModelView):
# For peewee have to save inline forms after model was saved
save_inline(form, model)
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to update model')
return False
......@@ -372,7 +372,7 @@ class ModelView(BaseModelView):
self.on_model_delete(model)
model.delete_instance(recursive=True)
return True
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to delete model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to delete model')
return False
......@@ -407,5 +407,5 @@ class ModelView(BaseModelView):
'%(count)s models were successfully deleted.',
count,
count=count))
except Exception, ex:
except Exception as ex:
flash(gettext('Failed to delete models. %(error)s', error=str(ex)), 'error')
......@@ -84,10 +84,10 @@ def test_model():
eq_(view._filters, None)
# Verify form
eq_(view._create_form_class.test1.field_class, wtf.TextField)
eq_(view._create_form_class.test2.field_class, wtf.TextField)
eq_(view._create_form_class.test3.field_class, wtf.TextAreaField)
eq_(view._create_form_class.test4.field_class, wtf.TextAreaField)
eq_(view._create_form_class.test1.field_class, fields.TextField)
eq_(view._create_form_class.test2.field_class, fields.TextField)
eq_(view._create_form_class.test3.field_class, fields.TextAreaField)
eq_(view._create_form_class.test4.field_class, fields.TextAreaField)
# Make some test clients
client = app.test_client()
......@@ -110,7 +110,7 @@ def test_model():
rv = client.get('/admin/model1view/')
eq_(rv.status_code, 200)
ok_('test1large' in rv.data)
ok_('test1large' in _compat.as_unicode(rv.data))
url = '/admin/model1view/edit/?id=%s' % model.id
rv = client.get(url)
......@@ -159,8 +159,9 @@ def test_list_columns():
client = app.test_client()
rv = client.get('/admin/model1view/')
ok_('Column1' in rv.data)
ok_('Test2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('Column1' in data)
ok_('Test2' not in data)
def test_exclude_columns():
......@@ -170,7 +171,7 @@ def test_exclude_columns():
view = CustomModelView(
Model1, db.session,
column_exclude_list=['test2', 'test4', 'enum_field']
column_exclude_list=['test2', 'test4', 'enum_field']
)
admin.add_view(view)
......@@ -182,8 +183,9 @@ def test_exclude_columns():
client = app.test_client()
rv = client.get('/admin/model1view/')
ok_('Test1' in rv.data)
ok_('Test2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('Test1' in data)
ok_('Test2' not in data)
def test_column_searchable_list():
......@@ -209,8 +211,9 @@ def test_column_searchable_list():
client = app.test_client()
rv = client.get('/admin/model1view/?search=model1')
ok_('model1' in rv.data)
ok_('model2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('model1' in data)
ok_('model2' not in data)
def test_column_filters():
......@@ -304,13 +307,15 @@ def test_column_filters():
rv = client.get('/admin/model1view/?flt0_0=model1_obj1')
eq_(rv.status_code, 200)
ok_('model1_obj1' in rv.data)
ok_('model1_obj2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('model1_obj1' in data)
ok_('model1_obj2' not in data)
rv = client.get('/admin/model1view/?flt0_5=model1_obj1')
eq_(rv.status_code, 200)
ok_('model1_obj1' in rv.data)
ok_('model1_obj2' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('model1_obj1' in data)
ok_('model1_obj2' in data)
# Test different filter types
view = CustomModelView(Model2, db.session,
......@@ -336,10 +341,11 @@ def test_column_filters():
rv = client.get('/admin/_model2/?flt1_0=1')
eq_(rv.status_code, 200)
ok_('model2_obj1' in rv.data)
ok_('model2_obj2' in rv.data)
ok_('model2_obj3' not in rv.data)
ok_('model2_obj4' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('model2_obj1' in data)
ok_('model2_obj2' in data)
ok_('model2_obj3' not in data)
ok_('model2_obj4' not in data)
def test_url_args():
......@@ -362,35 +368,42 @@ def test_url_args():
client = app.test_client()
rv = client.get('/admin/model1view/')
ok_('data1' in rv.data)
ok_('data3' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data1' in data)
ok_('data3' not in data)
# page
rv = client.get('/admin/model1view/?page=1')
ok_('data1' not in rv.data)
ok_('data3' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data1' not in data)
ok_('data3' in data)
# sort
rv = client.get('/admin/model1view/?sort=0&desc=1')
ok_('data1' not in rv.data)
ok_('data3' in rv.data)
ok_('data4' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data1' not in data)
ok_('data3' in data)
ok_('data4' in data)
# search
rv = client.get('/admin/model1view/?search=data1')
ok_('data1' in rv.data)
ok_('data2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data1' in data)
ok_('data2' not in data)
rv = client.get('/admin/model1view/?search=^data1')
ok_('data2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data2' not in data)
# like
rv = client.get('/admin/model1view/?flt0=0&flt0v=data1')
ok_('data1' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data1' in data)
# not like
rv = client.get('/admin/model1view/?flt0=1&flt0v=data1')
ok_('data2' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('data2' in data)
def test_non_int_pk():
......@@ -416,11 +429,13 @@ def test_non_int_pk():
rv = client.get('/admin/modelview/')
eq_(rv.status_code, 200)
ok_('test1' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('test1' in data)
rv = client.get('/admin/modelview/edit/?id=test1')
eq_(rv.status_code, 200)
ok_('test2' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('test2' in data)
def test_form():
......@@ -472,7 +487,7 @@ def test_on_model_change_delete():
client = app.test_client()
client.post('/admin/model1view/new/',
data=dict(test1='test1large', test2='test2'))
data=dict(test1='test1large', test2='test2'))
model = db.session.query(Model1).first()
eq_(model.test1, 'TEST1LARGE')
......
......@@ -8,6 +8,7 @@ from flask.ext.admin.contrib.sqlamodel.fields import InlineModelFormList
from . import setup
def test_inline_form():
app, db, admin = setup()
client = app.test_client()
......
......@@ -77,7 +77,7 @@ class MockModelView(base.BaseModelView):
# Data
def get_list(self, page, sort_field, sort_desc, search, filters):
self.search_arguments.append((page, sort_field, sort_desc, search, filters))
return len(self.all_models), self.all_models.itervalues()
return len(self.all_models), _compat.itervalues(self.all_models)
def get_one(self, id):
return self.all_models.get(int(id))
......@@ -153,7 +153,8 @@ def test_mockview():
# Try model edit view
rv = client.get('/admin/modelview/edit/?id=3')
eq_(rv.status_code, 200)
ok_('test1' in rv.data)
data = _compat.as_unicode(rv.data)
ok_('test1' in data)
rv = client.post('/admin/modelview/edit/?id=3',
data=dict(col1='test!', col2='test@', col3='test#'))
......@@ -208,13 +209,13 @@ def test_templates():
view.edit_template = 'mock.html'
rv = client.get('/admin/modelview/')
eq_(rv.data, 'Success!')
eq_(rv.data, b'Success!')
rv = client.get('/admin/modelview/new/')
eq_(rv.data, 'Success!')
eq_(rv.data, b'Success!')
rv = client.get('/admin/modelview/edit/?id=1')
eq_(rv.data, 'Success!')
eq_(rv.data, b'Success!')
def test_list_columns():
......@@ -231,8 +232,9 @@ def test_list_columns():
client = app.test_client()
rv = client.get('/admin/modelview/')
ok_('Column1' in rv.data)
ok_('Col2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('Column1' in data)
ok_('Col2' not in data)
def test_exclude_columns():
......@@ -246,8 +248,9 @@ def test_exclude_columns():
client = app.test_client()
rv = client.get('/admin/modelview/')
ok_('Col1' in rv.data)
ok_('Col2' not in rv.data)
data = _compat.as_unicode(rv.data)
ok_('Col1' in data)
ok_('Col2' not in data)
def test_sortable_columns():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment