tests: add "counter" tests mimicking real life situation
This commit is contained in:
parent
1c4a9f7cde
commit
345720c1a5
|
@ -4,6 +4,7 @@ import hashlib
|
|||
from wcs.qommon.ident.password_accounts import PasswordAccount
|
||||
from wcs.formdef import FormDef
|
||||
from wcs.workflows import Workflow, EditableWorkflowStatusItem
|
||||
from wcs.wf.jump import JumpWorkflowStatusItem
|
||||
from wcs.categories import Category
|
||||
from wcs.tracking_code import TrackingCode
|
||||
from wcs import fields
|
||||
|
@ -583,3 +584,44 @@ def test_form_multi_page_post_edit(pub):
|
|||
resp = resp.follow()
|
||||
assert 'foo2' in resp.body # modified value is there
|
||||
assert 'barXYZ' in resp.body # unchanged value is still there
|
||||
|
||||
|
||||
def test_form_count_dispatching(pub):
|
||||
user = create_user(pub)
|
||||
|
||||
formdef = create_formdef()
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
|
||||
workflow = Workflow(name='test')
|
||||
st1 = workflow.add_status('Status1', 'st1')
|
||||
jump = JumpWorkflowStatusItem()
|
||||
jump.condition = 'form_objects.count_status_st2 < 1'
|
||||
jump.status = 'st2'
|
||||
st1.items.append(jump)
|
||||
jump.parent = st1
|
||||
st2 = workflow.add_status('Status2', 'st2')
|
||||
workflow.store()
|
||||
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
formdef.data_class().wipe()
|
||||
|
||||
page = login(get_app(pub), username='foo', password='foo').get('/test/')
|
||||
page = page.forms[0].submit('submit') # form page
|
||||
page = page.forms[0].submit('submit') # confirmation page
|
||||
page = page.follow()
|
||||
assert 'The form has been recorded' in page.body # success
|
||||
|
||||
assert len(formdef.data_class().select(clause=lambda x: x.status == 'wf-st1')) == 0
|
||||
assert len(formdef.data_class().select(clause=lambda x: x.status == 'wf-st2')) == 1
|
||||
|
||||
page = login(get_app(pub), username='foo', password='foo').get('/test/')
|
||||
page = page.forms[0].submit('submit') # form page
|
||||
page = page.forms[0].submit('submit') # confirmation page
|
||||
page = page.follow()
|
||||
assert 'The form has been recorded' in page.body # success
|
||||
|
||||
assert len(formdef.data_class().select(clause=lambda x: x.status == 'wf-st2')) == 1
|
||||
assert len(formdef.data_class().select(clause=lambda x: x.status == 'wf-st1')) == 1
|
||||
|
|
|
@ -69,6 +69,24 @@ def test_jump_datetime_condition():
|
|||
tomorrow.timetuple()[:3]
|
||||
assert item.must_jump(formdata) is False
|
||||
|
||||
def test_jump_count_condition():
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'foobar'
|
||||
formdef.store()
|
||||
pub.substitutions.feed(formdef)
|
||||
formdata = formdef.data_class()()
|
||||
item = JumpWorkflowStatusItem()
|
||||
item.condition = 'form_objects.count < 2'
|
||||
assert item.must_jump(formdata) is True
|
||||
|
||||
for i in range(10):
|
||||
formdata = formdef.data_class()()
|
||||
formdata.store()
|
||||
|
||||
item.condition = 'form_objects.count < 2'
|
||||
assert item.must_jump(formdata) is False
|
||||
|
||||
def test_check_auth():
|
||||
user = pub.user_class(name='foo')
|
||||
user.store()
|
||||
|
|
Loading…
Reference in New Issue