feat: expose Role permissions for editing
This commit is contained in:
parent
97e914c2e0
commit
230e2fd1ab
19 changed files with 736 additions and 34 deletions
|
@ -162,6 +162,24 @@ class TestMasterView(WebTestCase):
|
|||
model_class=MyModel):
|
||||
self.assertEqual(master.MasterView.get_route_prefix(), 'trucks')
|
||||
|
||||
def test_get_permission_prefix(self):
|
||||
|
||||
# error by default (since no model class)
|
||||
self.assertRaises(AttributeError, master.MasterView.get_permission_prefix)
|
||||
|
||||
# subclass may specify permission prefix
|
||||
with patch.object(master.MasterView, 'permission_prefix', new='widgets', create=True):
|
||||
self.assertEqual(master.MasterView.get_permission_prefix(), 'widgets')
|
||||
|
||||
# subclass may specify route prefix
|
||||
with patch.object(master.MasterView, 'route_prefix', new='widgets', create=True):
|
||||
self.assertEqual(master.MasterView.get_permission_prefix(), 'widgets')
|
||||
|
||||
# or it may specify model class
|
||||
Truck = MagicMock(__name__='Truck')
|
||||
with patch.object(master.MasterView, 'model_class', new=Truck, create=True):
|
||||
self.assertEqual(master.MasterView.get_permission_prefix(), 'trucks')
|
||||
|
||||
def test_get_url_prefix(self):
|
||||
|
||||
# error by default (since no model class)
|
||||
|
@ -315,6 +333,9 @@ class TestMasterView(WebTestCase):
|
|||
##############################
|
||||
|
||||
def test_render_to_response(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('appinfo', '/appinfo/')
|
||||
|
||||
def widgets(request): return {}
|
||||
self.pyramid_config.add_route('widgets', '/widgets/')
|
||||
|
@ -539,28 +560,38 @@ class TestMasterView(WebTestCase):
|
|||
##############################
|
||||
|
||||
def test_index(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('settings.create', '/settings/new')
|
||||
self.pyramid_config.add_route('settings.view', '/settings/{name}')
|
||||
self.pyramid_config.add_route('settings.edit', '/settings/{name}/edit')
|
||||
self.pyramid_config.add_route('settings.delete', '/settings/{name}/delete')
|
||||
|
||||
# sanity/coverage check using /settings/
|
||||
master.MasterView.model_name = 'Setting'
|
||||
master.MasterView.model_key = 'name'
|
||||
master.MasterView.grid_columns = ['name', 'value']
|
||||
view = master.MasterView(self.request)
|
||||
response = view.index()
|
||||
# then again with data, to include view action url
|
||||
data = [{'name': 'foo', 'value': 'bar'}]
|
||||
with patch.object(view, 'get_grid_data', return_value=data):
|
||||
with patch.multiple(master.MasterView, create=True,
|
||||
model_name='Setting',
|
||||
model_key='name',
|
||||
get_index_url=MagicMock(return_value='/settings/'),
|
||||
grid_columns=['name', 'value']):
|
||||
view = master.MasterView(self.request)
|
||||
response = view.index()
|
||||
del master.MasterView.model_name
|
||||
del master.MasterView.model_key
|
||||
del master.MasterView.grid_columns
|
||||
|
||||
# then again with data, to include view action url
|
||||
data = [{'name': 'foo', 'value': 'bar'}]
|
||||
with patch.object(view, 'get_grid_data', return_value=data):
|
||||
response = view.index()
|
||||
|
||||
def test_create(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('settings.view', '/settings/{name}')
|
||||
model = self.app.model
|
||||
|
||||
# sanity/coverage check using /settings/new
|
||||
with patch.multiple(master.MasterView, create=True,
|
||||
model_name='Setting',
|
||||
model_key='name',
|
||||
get_index_url=MagicMock(return_value='/settings/'),
|
||||
form_fields=['name', 'value']):
|
||||
view = master.MasterView(self.request)
|
||||
|
||||
|
@ -604,6 +635,11 @@ class TestMasterView(WebTestCase):
|
|||
self.assertEqual(self.app.get_setting(self.session, 'foo.bar'), 'fraggle')
|
||||
|
||||
def test_view(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('settings.create', '/settings/new')
|
||||
self.pyramid_config.add_route('settings.edit', '/settings/{name}/edit')
|
||||
self.pyramid_config.add_route('settings.delete', '/settings/{name}/delete')
|
||||
|
||||
# sanity/coverage check using /settings/XXX
|
||||
setting = {'name': 'foo.bar', 'value': 'baz'}
|
||||
|
@ -611,6 +647,7 @@ class TestMasterView(WebTestCase):
|
|||
with patch.multiple(master.MasterView, create=True,
|
||||
model_name='Setting',
|
||||
model_key='name',
|
||||
get_index_url=MagicMock(return_value='/settings/'),
|
||||
grid_columns=['name', 'value'],
|
||||
form_fields=['name', 'value']):
|
||||
view = master.MasterView(self.request)
|
||||
|
@ -618,6 +655,11 @@ class TestMasterView(WebTestCase):
|
|||
response = view.view()
|
||||
|
||||
def test_edit(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('settings.create', '/settings/new')
|
||||
self.pyramid_config.add_route('settings.view', '/settings/{name}')
|
||||
self.pyramid_config.add_route('settings.delete', '/settings/{name}/delete')
|
||||
model = self.app.model
|
||||
self.app.save_setting(self.session, 'foo.bar', 'frazzle')
|
||||
self.session.commit()
|
||||
|
@ -634,6 +676,7 @@ class TestMasterView(WebTestCase):
|
|||
with patch.multiple(master.MasterView, create=True,
|
||||
model_name='Setting',
|
||||
model_key='name',
|
||||
get_index_url=MagicMock(return_value='/settings/'),
|
||||
form_fields=['name', 'value']):
|
||||
view = master.MasterView(self.request)
|
||||
with patch.object(view, 'get_instance', new=get_instance):
|
||||
|
@ -675,6 +718,11 @@ class TestMasterView(WebTestCase):
|
|||
self.assertEqual(self.app.get_setting(self.session, 'foo.bar'), 'froogle')
|
||||
|
||||
def test_delete(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
self.pyramid_config.add_route('settings.create', '/settings/new')
|
||||
self.pyramid_config.add_route('settings.view', '/settings/{name}')
|
||||
self.pyramid_config.add_route('settings.edit', '/settings/{name}/edit')
|
||||
model = self.app.model
|
||||
self.app.save_setting(self.session, 'foo.bar', 'frazzle')
|
||||
self.session.commit()
|
||||
|
@ -692,6 +740,7 @@ class TestMasterView(WebTestCase):
|
|||
with patch.multiple(master.MasterView, create=True,
|
||||
model_name='Setting',
|
||||
model_key='name',
|
||||
get_index_url=MagicMock(return_value='/settings/'),
|
||||
form_fields=['name', 'value']):
|
||||
view = master.MasterView(self.request)
|
||||
with patch.object(view, 'get_instance', new=get_instance):
|
||||
|
@ -730,6 +779,8 @@ class TestMasterView(WebTestCase):
|
|||
self.assertEqual(self.session.query(model.Setting).count(), 0)
|
||||
|
||||
def test_configure(self):
|
||||
self.pyramid_config.include('wuttaweb.views.common')
|
||||
self.pyramid_config.include('wuttaweb.views.auth')
|
||||
model = self.app.model
|
||||
|
||||
# mock settings
|
||||
|
@ -750,6 +801,7 @@ class TestMasterView(WebTestCase):
|
|||
route_prefix='appinfo',
|
||||
template_prefix='/appinfo',
|
||||
creatable=False,
|
||||
get_index_url=MagicMock(return_value='/appinfo/'),
|
||||
configure_get_simple_settings=MagicMock(return_value=settings)):
|
||||
|
||||
# get the form page
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue