tests: add more tests around forms admin pages

This commit is contained in:
Frédéric Péters 2014-12-29 20:45:20 +01:00
parent b0e706dbec
commit 641267ecd5
1 changed files with 217 additions and 0 deletions

View File

@ -129,6 +129,211 @@ def test_forms_edit():
assert FormDef.get(1).name == 'new title'
assert FormDef.get(1).url_name == 'new-title'
def test_form_category():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
assert 'Category:' not in resp.body
Category.wipe()
cat = Category(name='Foo')
cat.store()
cat = Category(name='Bar')
cat.store()
resp = app.get('/admin/forms/1/')
assert 'Category:' in resp.body
def test_form_category_select():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
Category.wipe()
cat = Category(name='Foo')
cat.store()
cat = Category(name='Bar')
cat.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click(href='category')
resp = resp.forms[0].submit('cancel')
assert FormDef.get(formdef.id).category_id is None
resp = app.get('/admin/forms/1/')
resp = resp.click(href='category')
resp.forms[0]['category_id'] = cat.id
resp = resp.forms[0].submit('submit')
assert FormDef.get(formdef.id).category_id == cat.id
def test_form_workflow():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
assert 'Workflow:' not in resp.body
Workflow.wipe()
workflow = Workflow(name='Workflow One')
workflow.store()
workflow = Workflow(name='Workflow Two')
workflow.store()
resp = app.get('/admin/forms/1/')
assert 'Workflow:' in resp.body
def test_form_workflow_change():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
Workflow.wipe()
workflow = Workflow(name='Workflow One')
workflow.store()
workflow = Workflow(name='Workflow Two')
workflow.possible_status = Workflow.get_default_workflow().possible_status[:]
workflow.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='workflow')
resp = resp.forms[0].submit('cancel')
assert FormDef.get(formdef.id).workflow_id is None
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='workflow')
assert 'Workflow One' not in resp.body # this workflow doesn't have any status
resp.forms[0]['workflow_id'] = workflow.id
resp = resp.forms[0].submit('submit')
assert FormDef.get(formdef.id).workflow_id == workflow.id
def test_form_workflow_remapping():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
data_class = formdef.data_class()
data_class.wipe()
formdata = data_class()
formdata.status = 'wf-new'
formdata.store()
Workflow.wipe()
workflow = Workflow(name='Workflow One')
workflow.store()
workflow = Workflow(name='Workflow Two')
# create it with a single status
workflow.possible_status = [Workflow.get_default_workflow().possible_status[-1]]
workflow.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='workflow')
resp.forms[0]['workflow_id'] = workflow.id
resp = resp.forms[0].submit('submit')
assert resp.location == 'http://example.net/admin/forms/1/workflow-status-remapping?new=2'
resp = resp.follow()
for status in Workflow.get_default_workflow().possible_status:
assert resp.forms[0]['mapping-%s' % status.id]
# there's only one possible new status
assert len(resp.forms[0]['mapping-just_submitted'].options) == 1
assert data_class.get(1).status == 'wf-new'
resp = resp.forms[0].submit()
assert data_class.get(1).status == 'wf-finished'
def test_form_workflow_role():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='role/_receiver')
resp = resp.forms[0].submit('cancel')
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='role/_receiver')
resp.forms[0]['role_id'] = 'foobar'
resp = resp.forms[0].submit('submit')
assert FormDef.get(1).workflow_roles == {'_receiver': 1}
def test_form_acl_read():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='acl-read')
resp = resp.forms[0].submit('cancel')
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='acl-read')
resp.forms[0]['acl_read'] = 'Everybody'
resp = resp.forms[0].submit('submit')
assert FormDef.get(1).acl_read == 'all'
def test_form_roles():
create_superuser()
create_role()
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = []
formdef.store()
app = login(get_app(pub))
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='roles')
resp = resp.forms[0].submit('cancel')
resp = app.get('/admin/forms/1/')
resp = resp.click('change', href='roles')
resp.forms[0]['always_advertise'] = True
resp = resp.forms[0].submit('submit')
assert FormDef.get(1).always_advertise == True
def test_form_delete():
create_role()
@ -207,6 +412,7 @@ def test_form_qrcode():
assert '<div id="qrcode">' in resp.body
def test_form_new_field():
create_superuser()
create_role()
FormDef.wipe()
@ -232,6 +438,17 @@ def test_form_new_field():
assert FormDef.get(1).fields[0].key == 'string'
assert FormDef.get(1).fields[0].label == 'foobar'
# add a title too
resp.forms[0]['label'] = 'baz'
resp.forms[0]['type'] = 'Title'
resp = resp.forms[0].submit()
assert resp.location == 'http://example.net/admin/forms/1/fields/'
resp = resp.follow()
# check it's in the preview
resp = app.get('/admin/forms/1/')
assert '<h3>baz</h3>' in resp.body
def test_form_delete_field():
create_role()