From d6b4569cdc176c04c73ba54d6c36915b857ce63a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sat, 22 Sep 2018 13:05:34 +0200 Subject: [PATCH] forms: autosave when user asks for tracking code popup (#26630) --- tests/test_form_pages.py | 25 +++++++++++++++++-------- wcs/qommon/static/js/qommon.forms.js | 1 + 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index d9a2b9d20..d008945eb 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -1408,22 +1408,31 @@ def test_form_empty_tracking_code(pub): def test_form_tracking_code_email(pub, emails): formdef = create_formdef() formdef.data_class().wipe() - formdef.fields = [fields.StringField(id='0', label='string')] + formdef.fields = [fields.StringField(id='0', label='string'), + fields.StringField(id='1', label='string2')] formdef.enable_tracking_codes = True formdef.store() - formdata = formdef.data_class()() - formdata.data = {'0': 'foobar'} - formdata.tracking_code = 'ABCDEF' - formdata.store() + app = get_app(pub) + resp = app.get('/test/') + resp.form['f0'] = 'barfoo' + # autosave will be made using javascript in real world + app.post('/test/autosave', params=resp.form.submit_fields()) - resp = get_app(pub).get('/test/code/ABCDEF/') + tracking_code = get_displayed_tracking_code(resp) + assert tracking_code is not None + + resp = get_app(pub).get('/test/code/%s/' % tracking_code) assert '

Keep your tracking code

' in resp.body resp.forms[0]['email'] = 'foo@localhost' resp = resp.forms[0].submit() assert emails.emails.get('Tracking Code reminder') - assert 'ABCDEF' in emails.emails.values()[0]['payload'] - assert resp.location == 'http://example.net/test/code/ABCDEF/load' + assert tracking_code in emails.emails.values()[0]['payload'] + assert resp.location == 'http://example.net/test/code/%s/load' % tracking_code + resp = resp.follow() + resp = resp.follow() + resp = resp.follow() + assert resp.forms[1]['f0'].value == 'barfoo' def test_form_tracking_code_remove_draft(pub): formdef = create_formdef() diff --git a/wcs/qommon/static/js/qommon.forms.js b/wcs/qommon/static/js/qommon.forms.js index e696e283f..9a220a51d 100644 --- a/wcs/qommon/static/js/qommon.forms.js +++ b/wcs/qommon/static/js/qommon.forms.js @@ -27,6 +27,7 @@ $(function() { }); } timeout_id = window.setTimeout(autosave, 5000); + $('#tracking-code a').on('click', autosave); } $('.date-pick').each(function() { var $date_input = $(this); -- 2.19.0