tests: check editing a file field in a formdata created by workflow (#53432)

This commit is contained in:
Emmanuel Cazenave 2021-04-26 18:35:21 +02:00 committed by Frédéric Péters
parent 7e11c14272
commit d1b0510f55
1 changed files with 88 additions and 0 deletions

View File

@ -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