tests: check editing a file field in a formdata created by workflow (#53432)
This commit is contained in:
parent
7e11c14272
commit
d1b0510f55
|
@ -9021,3 +9021,91 @@ def test_form_item_timetable_data_source_with_date_alignment(pub, http_requests)
|
|||
resp = resp.form.submit('submit')
|
||||
resp = resp.form.submit('submit')
|
||||
assert formdef.data_class().count() == 1
|
||||
|
||||
|
||||
def test_file_prefill_on_edit(pub, http_requests):
|
||||
user = create_user(pub)
|
||||
formdef = create_formdef()
|
||||
formdef.fields = [fields.FileField(id='0', label='file', type='file', varname='foo_file')]
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
workflow = Workflow(name='test')
|
||||
st1 = workflow.add_status('New', 'st1')
|
||||
st2 = workflow.add_status('CreateFormdata')
|
||||
|
||||
editable = EditableWorkflowStatusItem()
|
||||
editable.id = '_editable'
|
||||
editable.by = ['_submitter', '_receiver']
|
||||
st1.items.append(editable)
|
||||
editable.parent = st1
|
||||
|
||||
jump = ChoiceWorkflowStatusItem()
|
||||
jump.id = '_resubmit'
|
||||
jump.label = 'Resubmit'
|
||||
jump.by = ['_submitter']
|
||||
jump.status = st2.id
|
||||
jump.parent = st1
|
||||
st1.items.append(jump)
|
||||
|
||||
create_formdata = CreateFormdataWorkflowStatusItem()
|
||||
create_formdata.id = '_create_formdata'
|
||||
create_formdata.formdef_slug = formdef.url_name
|
||||
create_formdata.mappings = [
|
||||
Mapping(field_id='0', expression='{{form_var_foo_file}}'),
|
||||
]
|
||||
create_formdata.parent = st2
|
||||
st2.items.append(create_formdata)
|
||||
|
||||
workflow.store()
|
||||
formdef.workflow_id = workflow.id
|
||||
formdef.store()
|
||||
|
||||
upload = Upload('test.txt', b'foobar', 'text/plain')
|
||||
resp = get_app(pub).get('/test/')
|
||||
resp.forms[0]['f0$file'] = upload
|
||||
resp = resp.form.submit('submit') # -> validation page
|
||||
resp = resp.form.submit('submit') # -> submit
|
||||
|
||||
assert resp.status_int == 302
|
||||
resp = resp.follow()
|
||||
assert 'The form has been recorded' in resp.text
|
||||
resp = resp.click('test.txt')
|
||||
assert resp.location.endswith('/test.txt')
|
||||
resp = resp.follow()
|
||||
assert resp.content_type == 'text/plain'
|
||||
assert resp.text == 'foobar'
|
||||
|
||||
formdata = formdef.data_class().select()[0]
|
||||
formdata.user_id = user.id
|
||||
formdata.store()
|
||||
|
||||
app = login(get_app(pub), username='foo', password='foo')
|
||||
resp = app.get('/test/%s/' % formdata.id)
|
||||
assert 'button_editable-button' in resp.text
|
||||
|
||||
# go to edition page
|
||||
resp = resp.form.submit('button_editable').follow()
|
||||
# file is "prefilled"
|
||||
assert 'test.txt' in resp.text
|
||||
|
||||
# go back to form page and trigger formdata creation
|
||||
resp = app.get('/test/%s/' % formdata.id)
|
||||
resp = resp.form.submit('button_resubmit')
|
||||
assert resp.status == '303 See Other'
|
||||
resp = resp.follow()
|
||||
|
||||
assert formdef.data_class().count() == 2
|
||||
new_formdata = formdef.data_class().select(lambda x: str(x.id) != str(formdata.id))[0]
|
||||
assert new_formdata.data['0'].orig_filename == 'test.txt'
|
||||
assert new_formdata.data['0'].get_content() == b'foobar'
|
||||
|
||||
resp = app.get('/test/%s/' % new_formdata.id)
|
||||
assert 'button_editable-button' in resp.text
|
||||
# go to edition page
|
||||
resp = resp.form.submit('button_editable').follow()
|
||||
# file is "prefilled"
|
||||
assert 'test.txt' in resp.text
|
||||
# and persist after being saved again
|
||||
resp = resp.form.submit('submit').follow()
|
||||
assert '<span>test.txt</span>' in resp.text
|
||||
|
|
Loading…
Reference in New Issue