@ -1,6 +1,6 @@
import os
from nose.tools import ok_ , eq_ , raises
import pytest
from flask import Flask , request , abort , url_for
from flask.views import MethodView
@ -76,27 +76,27 @@ class MockMethodView(base.BaseView):
def test_baseview_defaults ( ) :
view = MockView ( )
eq_ ( view . name , None )
eq_ ( view . category , None )
eq_ ( view . endpoint , ' mockview ' )
eq_ ( view . url , None )
eq_ ( view . static_folder , None )
eq_ ( view . admin , None )
eq_ ( view . blueprint , None )
assert view . name is None
assert view . category is None
assert view . endpoint == ' mockview '
assert view . url is None
assert view . static_folder is None
assert view . admin is None
assert view . blueprint is None
def test_base_defaults ( ) :
admin = base . Admin ( )
eq_ ( admin . name , ' Admin ' )
eq_ ( admin . url , ' /admin ' )
eq_ ( admin . endpoint , ' admin ' )
eq_ ( admin . app , None )
ok_ ( admin . index_view is not None )
eq_ ( admin . index_view . _template , ' admin/index.html ' )
assert admin . name == ' Admin '
assert admin . url == ' /admin '
assert admin . endpoint == ' admin '
assert admin . app is None
assert admin . index_view is not None
assert admin . index_view . _template == ' admin/index.html '
# Check if default view was added
eq_ ( len ( admin . _views ) , 1 )
eq_ ( admin . _views [ 0 ] , admin . index_view )
assert len ( admin . _views ) == 1
assert admin . _views [ 0 ] == admin . index_view
def test_custom_index_view ( ) :
@ -104,16 +104,16 @@ def test_custom_index_view():
url = ' /d ' , template = ' e ' )
admin = base . Admin ( index_view = view )
eq_ ( admin . endpoint , ' c ' )
eq_ ( admin . url , ' /d ' )
ok_ ( admin . index_view is view )
eq_ ( view . name , ' a ' )
eq_ ( view . category , ' b ' )
eq_ ( view . _template , ' e ' )
assert admin . endpoint == ' c '
assert admin . url == ' /d '
assert admin . index_view is view
assert view . name == ' a '
assert view . category == ' b '
assert view . _template == ' e '
# Check if view was added
eq_ ( len ( admin . _views ) , 1 )
eq_ ( admin . _views [ 0 ] , view )
assert len ( admin . _views ) == 1
assert admin . _views [ 0 ] == view
def test_custom_index_view_in_init_app ( ) :
@ -123,41 +123,41 @@ def test_custom_index_view_in_init_app():
admin = base . Admin ( )
admin . init_app ( app , index_view = view )
eq_ ( admin . endpoint , ' c ' )
eq_ ( admin . url , ' /d ' )
ok_ ( admin . index_view is view )
eq_ ( view . name , ' a ' )
eq_ ( view . category , ' b ' )
eq_ ( view . _template , ' e ' )
assert admin . endpoint == ' c '
assert admin . url == ' /d '
assert admin . index_view is view
assert view . name == ' a '
assert view . category == ' b '
assert view . _template == ' e '
# Check if view was added
eq_ ( len ( admin . _views ) , 1 )
eq_ ( admin . _views [ 0 ] , view )
assert len ( admin . _views ) == 1
assert admin . _views [ 0 ] == view
def test_base_registration ( ) :
app = Flask ( __name__ )
admin = base . Admin ( app )
eq_ ( admin . app , app )
ok_ ( admin . index_view . blueprint is not None )
assert admin . app == app
assert admin . index_view . blueprint is not None
def test_admin_customizations ( ) :
app = Flask ( __name__ )
admin = base . Admin ( app , name = ' Test ' , url = ' /foobar ' , static_url_path = ' /static/my/admin ' )
eq_ ( admin . name , ' Test ' )
eq_ ( admin . url , ' /foobar ' )
eq_ ( admin . index_view . blueprint . static_url_path , ' /static/my/admin ' )
assert admin . name == ' Test '
assert admin . url == ' /foobar '
assert admin . index_view . blueprint . static_url_path == ' /static/my/admin '
client = app . test_client ( )
rv = client . get ( ' /foobar/ ' )
eq_ ( rv . status_code , 200 )
assert rv . status_code == 200
# test custom static_url_path
with app . test_request_context ( ' / ' ) :
rv = client . get ( url_for ( ' admin.static ' , filename = ' bootstrap/bootstrap2/css/bootstrap.css ' ) )
eq_ ( rv . status_code , 200 )
assert rv . status_code == 200
def test_baseview_registration ( ) :
@ -167,43 +167,43 @@ def test_baseview_registration():
bp = view . create_blueprint ( admin )
# Base properties
eq_ ( view . admin , admin )
ok_ ( view . blueprint is not None )
assert view . admin == admin
assert view . blueprint is not None
# Calculated properties
eq_ ( view . endpoint , ' mockview ' )
eq_ ( view . url , ' /admin/mockview ' )
eq_ ( view . name , ' Mock View ' )
assert view . endpoint == ' mockview '
assert view . url == ' /admin/mockview '
assert view . name == ' Mock View '
# Verify generated blueprint properties
eq_ ( bp . name , view . endpoint )
eq_ ( bp . url_prefix , view . url )
eq_ ( bp . template_folder , os . path . join ( ' templates ' , ' bootstrap2 ' ) )
eq_ ( bp . static_folder , view . static_folder )
assert bp . name == view . endpoint
assert bp . url_prefix == view . url
assert bp . template_folder == os . path . join ( ' templates ' , ' bootstrap2 ' )
assert bp . static_folder == view . static_folder
# Verify customizations
view = MockView ( name = ' Test ' , endpoint = ' foobar ' )
view . create_blueprint ( base . Admin ( ) )
eq_ ( view . name , ' Test ' )
eq_ ( view . endpoint , ' foobar ' )
eq_ ( view . url , ' /admin/foobar ' )
assert view . name == ' Test '
assert view . endpoint == ' foobar '
assert view . url == ' /admin/foobar '
view = MockView ( url = ' test ' )
view . create_blueprint ( base . Admin ( ) )
eq_ ( view . url , ' /admin/test ' )
assert view . url == ' /admin/test '
view = MockView ( url = ' /test/test ' )
view . create_blueprint ( base . Admin ( ) )
eq_ ( view . url , ' /test/test ' )
assert view . url == ' /test/test '
view = MockView ( endpoint = ' test ' )
view . create_blueprint ( base . Admin ( url = ' / ' ) )
eq_ ( view . url , ' /test ' )
assert view . url == ' /test '
view = MockView ( static_url_path = ' /static/my/test ' )
view . create_blueprint ( base . Admin ( ) )
eq_ ( view . blueprint . static_url_path , ' /static/my/test ' )
assert view . blueprint . static_url_path == ' /static/my/test '
def test_baseview_urls ( ) :
@ -213,7 +213,7 @@ def test_baseview_urls():
view = MockView ( )
admin . add_view ( view )
eq_ ( len ( view . _urls ) , 2 )
assert len ( view . _urls ) == 2
def test_add_views ( ) :
@ -222,10 +222,10 @@ def test_add_views():
admin . add_views ( MockView ( endpoint = ' test1 ' ) , MockView ( endpoint = ' test2 ' ) )
eq_ ( len ( admin . menu ( ) ) , 3 )
assert len ( admin . menu ( ) ) == 3
@raises ( Exception )
@pytest.mark.xfail ( raises = Exception )
def test_no_default ( ) :
app = Flask ( __name__ )
admin = base . Admin ( app )
@ -240,18 +240,18 @@ def test_call():
client = app . test_client ( )
rv = client . get ( ' /admin/ ' )
eq_ ( rv . status_code , 200 )
assert rv . status_code == 200
rv = client . get ( ' /admin/mockview/ ' )
eq_ ( rv . data , b ' Success! ' )
assert rv . data == b ' Success! '
rv = client . get ( ' /admin/mockview/test/ ' )
eq_ ( rv . data , b ' Success! ' )
assert rv . data == b ' Success! '
# Check authentication failure
view . allow_call = False
rv = client . get ( ' /admin/mockview/ ' )
eq_ ( rv . data , b ' Failure! ' )
assert rv . data == b ' Failure! '
def test_permissions ( ) :
@ -264,7 +264,7 @@ def test_permissions():
view . allow_access = False
rv = client . get ( ' /admin/mockview/ ' )
eq_ ( rv . status_code , 403 )
assert rv . status_code == 403
def test_inaccessible_callback ( ) :
@ -278,7 +278,7 @@ def test_inaccessible_callback():
view . inaccessible_callback = lambda * args , * * kwargs : abort ( 418 )
rv = client . get ( ' /admin/mockview/ ' )
eq_ ( rv . status_code , 418 )
assert rv . status_code == 418
def get_visibility ( ) :
@ -293,7 +293,7 @@ def get_visibility():
client = app . test_client ( )
rv = client . get ( ' /admin/mockview/ ' )
ok_ ( ' TestMenuItem ' not in rv . data . decode ( ' utf-8 ' ) )
assert ' TestMenuItem ' not in rv . data . decode ( ' utf-8 ' )
def test_submenu ( ) :
@ -306,21 +306,21 @@ def test_submenu():
view . allow_access = False
admin . add_view ( view )
ok_ ( ' Test ' in admin . _menu_categories )
eq_ ( len ( admin . _menu ) , 2 )
eq_ ( admin . _menu [ 1 ] . name , ' Test ' )
eq_ ( len ( admin . _menu [ 1 ] . _children ) , 2 )
assert ' Test ' in admin . _menu_categories
assert len ( admin . _menu ) == 2