misc: split test module (#47323)

This commit is contained in:
Lauréline Guérin 2020-10-08 15:16:22 +02:00
parent fa9e2aedb0
commit ecccd87464
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 198 additions and 122 deletions

View File

@ -1632,92 +1632,6 @@ def test_studio_workflows(pub, studio):
assert 'This is the default workflow,' in resp.text
def test_cards_new(pub, studio):
CardDef.wipe()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/cards/')
resp = resp.click('New Card Model')
resp.form['name'] = 'card title'
resp = resp.form.submit()
assert resp.location == 'http://example.net/backoffice/cards/1/'
resp = resp.follow()
assert '<h2>card title' in resp.text
assert CardDef.get(1).workflow_id is None
assert CardDef.get(1).disabled is False
def test_cards_delete(pub, studio):
test_cards_new(pub, studio)
app = login(get_app(pub))
carddef = CardDef.select()[0]
carddata = carddef.data_class()()
carddata.just_created()
carddata.data = {}
carddata.store()
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Delete')
if pub.is_using_postgresql():
assert 'Deletion is not possible as there are cards.' in resp
carddef.data_class().wipe()
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Delete')
resp = resp.form.submit('submit')
assert CardDef.count() == 0
carddata.remove_self() # don't keep leftovers
def test_cards_duplicate(pub, studio):
test_cards_new(pub, studio)
app = login(get_app(pub))
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Duplicate')
assert CardDef.get(2).name == 'card title (copy)'
assert CardDef.get(2).disabled is False
def test_card_workflow_change(pub, studio):
Workflow.wipe()
workflow = Workflow(name='Workflow Two')
workflow.add_status('plop')
workflow.store()
CardDef.wipe()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/cards/')
resp = resp.click('New Card Model')
resp.form['name'] = 'card title'
resp = resp.form.submit()
resp = resp.follow()
resp = resp.click(href='workflow', index=1)
assert resp.form['workflow_id'].options[0][2] == 'Default (cards)'
resp = resp.form.submit('submit').follow()
assert CardDef.select()[0].workflow_id is None
carddata = CardDef.select()[0].data_class()()
carddata.status = 'wf-recorded'
carddata.store()
resp = resp.click(href='workflow', index=1)
resp.form['workflow_id'] = '%s' % workflow.id
resp = resp.form.submit('submit')
assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % workflow.id
resp = resp.follow()
resp = resp.form.submit('submit').follow()
resp = resp.click(href='workflow', index=1)
resp.form['workflow_id'] = ''
resp = resp.form.submit('submit')
assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % '_carddef_default'
resp = resp.follow()
resp = resp.form.submit('submit').follow()
def test_create_formdata(pub):
create_superuser(pub)
create_role()
@ -2012,39 +1926,3 @@ def test_block_use_in_formdef(pub, blocks_feature):
assert 'a block field' in resp.text
resp = resp.click('Edit', href='1/')
assert resp.form['max_items'].value == '1'
def test_card_custom_view_data_source(pub, studio):
from test_backoffice_pages import create_environment, test_carddata_custom_view, create_superuser
create_environment(pub)
test_carddata_custom_view(pub, studio)
carddef = CardDef.select()[0]
carddef.digest_template = '{{ form_var_foo }}'
carddef.store()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/data/foo/user-card-view/')
resp.forms['listing-settings']['filter-1'].checked = True
resp = resp.forms['listing-settings'].submit()
resp.forms['listing-settings']['filter-1-value'] = 'FOO 0'
resp = resp.forms['listing-settings'].submit()
resp.forms['save-custom-view']['visibility'] = 'datasource'
resp = resp.forms['save-custom-view'].submit()
assert pub.custom_view_class.count() == 1
assert pub.custom_view_class.select()[0].visibility == 'datasource'
formdef = FormDef.get_by_urlname('form-title')
resp = app.get('/backoffice/forms/%s/fields/' % formdef.id)
resp.forms[0]['label'] = 'foobar'
resp.forms[0]['type'] = 'item'
resp = resp.forms[0].submit()
resp = resp.follow()
formdef = FormDef.get_by_urlname('form-title')
resp = resp.click(href='%s/' % formdef.fields[-1].id, index=0)
assert 'carddef:foo' in [x[0] for x in resp.form['data_source$type'].options]
assert 'carddef:foo:card-view' in [x[0] for x in resp.form['data_source$type'].options]
assert len(CardDef.get_data_source_items('carddef:foo')) == 50
assert len(CardDef.get_data_source_items('carddef:foo:card-view')) == 1

View File

@ -0,0 +1,198 @@
# -*- coding: utf-8 -*-
import pytest
from wcs import fields
from wcs.carddef import CardDef
from wcs.formdef import FormDef
from wcs.qommon.http_request import HTTPRequest
from wcs.roles import Role
from wcs.workflows import Workflow
from utilities import get_app, login, create_temporary_pub, clean_temporary_pub
from test_admin_pages import create_superuser
def pytest_generate_tests(metafunc):
if 'pub' in metafunc.fixturenames:
metafunc.parametrize('pub', ['pickle', 'sql', 'pickle-templates'], indirect=True)
@pytest.fixture
def pub(request):
pub = create_temporary_pub(
sql_mode=bool('sql' in request.param),
templates_mode=bool('templates' in request.param)
)
req = HTTPRequest(None, {'SCRIPT_NAME': '/', 'SERVER_NAME': 'example.net'})
pub.set_app_dir(req)
pub.cfg['identification'] = {'methods': ['password']}
pub.cfg['language'] = {'language': 'en'}
pub.write_cfg()
return pub
def teardown_module(module):
clean_temporary_pub()
def test_cards_new(pub, studio):
CardDef.wipe()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/cards/')
resp = resp.click('New Card Model')
resp.form['name'] = 'card title'
resp = resp.form.submit()
assert resp.location == 'http://example.net/backoffice/cards/1/'
resp = resp.follow()
assert '<h2>card title' in resp.text
assert CardDef.get(1).workflow_id is None
assert CardDef.get(1).disabled is False
def test_cards_delete(pub, studio):
CardDef.wipe()
carddef = CardDef()
carddef.name = 'card title'
carddef.fields = []
carddef.store()
create_superuser(pub)
app = login(get_app(pub))
carddata = carddef.data_class()()
carddata.just_created()
carddata.data = {}
carddata.store()
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Delete')
if pub.is_using_postgresql():
assert 'Deletion is not possible as there are cards.' in resp
carddef.data_class().wipe()
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Delete')
resp = resp.form.submit('submit')
assert CardDef.count() == 0
carddata.remove_self() # don't keep leftovers
def test_cards_duplicate(pub, studio):
CardDef.wipe()
carddef = CardDef()
carddef.name = 'card title'
carddef.fields = []
carddef.store()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('http://example.net/backoffice/cards/1/')
resp = resp.click('Duplicate')
assert CardDef.get(2).name == 'card title (copy)'
assert CardDef.get(2).disabled is False
def test_card_workflow_change(pub, studio):
Workflow.wipe()
workflow = Workflow(name='Workflow Two')
workflow.add_status('plop')
workflow.store()
CardDef.wipe()
create_superuser(pub)
app = login(get_app(pub))
resp = app.get('/backoffice/cards/')
resp = resp.click('New Card Model')
resp.form['name'] = 'card title'
resp = resp.form.submit()
resp = resp.follow()
resp = resp.click(href='workflow', index=1)
assert resp.form['workflow_id'].options[0][2] == 'Default (cards)'
resp = resp.form.submit('submit').follow()
assert CardDef.select()[0].workflow_id is None
carddata = CardDef.select()[0].data_class()()
carddata.status = 'wf-recorded'
carddata.store()
resp = resp.click(href='workflow', index=1)
resp.form['workflow_id'] = '%s' % workflow.id
resp = resp.form.submit('submit')
assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % workflow.id
resp = resp.follow()
resp = resp.form.submit('submit').follow()
resp = resp.click(href='workflow', index=1)
resp.form['workflow_id'] = ''
resp = resp.form.submit('submit')
assert resp.location == 'http://example.net/backoffice/cards/1/workflow-status-remapping?new=%s' % '_carddef_default'
resp = resp.follow()
resp = resp.form.submit('submit').follow()
def test_card_custom_view_data_source(pub, studio):
user = create_superuser(pub)
Role.wipe()
role = Role(name='foobar')
role.store()
user.roles = [role.id]
user.store()
CardDef.wipe()
carddef = CardDef()
carddef.name = 'foo'
carddef.fields = [
fields.StringField(id='1', label='Test', type='string', varname='foo'),
]
carddef.backoffice_submission_roles = user.roles
carddef.workflow_roles = {'_editor': user.roles[0]}
carddef.digest_template = '{{ form_var_foo }}'
carddef.store()
carddef.data_class().wipe()
for i in range(2):
carddata = carddef.data_class()()
carddata.data = {'1': 'FOO %s' % i}
carddata.just_created()
carddata.store()
app = login(get_app(pub))
resp = app.get('/backoffice/data/foo/')
resp = resp.forms['listing-settings'].submit()
resp.forms['save-custom-view']['title'] = 'card view'
resp = resp.forms['save-custom-view'].submit()
resp = app.get('/backoffice/data/foo/user-card-view/')
resp.forms['listing-settings']['filter-1'].checked = True
resp = resp.forms['listing-settings'].submit()
resp.forms['listing-settings']['filter-1-value'] = 'FOO 0'
resp = resp.forms['listing-settings'].submit()
resp.forms['save-custom-view']['visibility'] = 'datasource'
resp = resp.forms['save-custom-view'].submit()
assert pub.custom_view_class.count() == 1
assert pub.custom_view_class.select()[0].visibility == 'datasource'
FormDef.wipe()
formdef = FormDef()
formdef.name = 'form title'
formdef.fields = [
fields.ItemField(id='1', label='field', type='item', varname='foo'),
]
formdef.store()
formdef = FormDef.get_by_urlname('form-title')
resp = app.get('/backoffice/forms/%s/fields/' % formdef.id)
resp.forms[0]['label'] = 'foobar'
resp.forms[0]['type'] = 'item'
resp = resp.forms[0].submit()
resp = resp.follow()
formdef = FormDef.get_by_urlname('form-title')
resp = resp.click(href='%s/' % formdef.fields[-1].id, index=0)
assert 'carddef:foo' in [x[0] for x in resp.form['data_source$type'].options]
assert 'carddef:foo:card-view' in [x[0] for x in resp.form['data_source$type'].options]
assert len(CardDef.get_data_source_items('carddef:foo')) == 2
assert len(CardDef.get_data_source_items('carddef:foo:card-view')) == 1