2324 |
2324 |
assert logged_error.occurences_count == 2
|
2325 |
2325 |
|
2326 |
2326 |
|
|
2327 |
def test_form_edit_autocomplete_list(pub):
|
|
2328 |
user = create_user(pub)
|
|
2329 |
|
|
2330 |
NamedDataSource.wipe()
|
|
2331 |
data_source = NamedDataSource(name='foobar')
|
|
2332 |
data_source.data_source = {'type': 'json', 'value': 'http://remote.example.net/json'}
|
|
2333 |
data_source.query_parameter = 'q'
|
|
2334 |
data_source.id_parameter = 'id'
|
|
2335 |
data_source.store()
|
|
2336 |
|
|
2337 |
formdef = create_formdef()
|
|
2338 |
formdef.data_class().wipe()
|
|
2339 |
|
|
2340 |
formdef.fields = [
|
|
2341 |
fields.ItemField(id='0', label='string', type='item',
|
|
2342 |
data_source={'type': 'foobar'},
|
|
2343 |
display_mode='autocomplete',
|
|
2344 |
),
|
|
2345 |
]
|
|
2346 |
formdef.store()
|
|
2347 |
|
|
2348 |
workflow = Workflow(name='test')
|
|
2349 |
st1 = workflow.add_status('Status1', 'st1')
|
|
2350 |
editable = EditableWorkflowStatusItem()
|
|
2351 |
editable.id = '_editable'
|
|
2352 |
editable.by = ['_submitter', '_receiver']
|
|
2353 |
st1.items.append(editable)
|
|
2354 |
editable.parent = st1
|
|
2355 |
workflow.store()
|
|
2356 |
|
|
2357 |
formdef.workflow_id = workflow.id
|
|
2358 |
formdef.store()
|
|
2359 |
|
|
2360 |
app = get_app(pub)
|
|
2361 |
login(app, username='foo', password='foo')
|
|
2362 |
|
|
2363 |
with mock.patch('wcs.qommon.misc.urlopen') as urlopen:
|
|
2364 |
data = {'data': [{'id': '1', 'text': 'hello', 'extra': 'foo'},
|
|
2365 |
{'id': '2', 'text': 'world', 'extra': 'bar'}]}
|
|
2366 |
urlopen.side_effect = lambda *args: StringIO(json.dumps(data))
|
|
2367 |
resp = app.get('/test/')
|
|
2368 |
assert 'data-select2-url=' in resp.text
|
|
2369 |
# simulate select2 mode, with qommon.forms.js adding an extra hidden widget
|
|
2370 |
resp.form.fields['f0_display'] = Hidden(form=resp.form, tag='input', name='f0_display', pos=10)
|
|
2371 |
resp.form['f0'].force_value('1')
|
|
2372 |
resp.form.fields['f0_display'].force_value('hello')
|
|
2373 |
resp = resp.form.submit('submit') # -> validation page
|
|
2374 |
resp = resp.form.submit('submit') # -> submit
|
|
2375 |
assert formdef.data_class().select()[0].data['0'] == '1'
|
|
2376 |
assert formdef.data_class().select()[0].data['0_display'] == 'hello'
|
|
2377 |
assert formdef.data_class().select()[0].data['0_structured'] == data['data'][0]
|
|
2378 |
|
|
2379 |
resp = resp.follow()
|
|
2380 |
url = resp.request.url
|
|
2381 |
resp = resp.form.submit('button_editable')
|
|
2382 |
assert 'wfedit' in resp.location
|
|
2383 |
resp = resp.follow()
|
|
2384 |
assert 'data-value="1"' in resp
|
|
2385 |
assert 'data-initial-display-value="hello"' in resp
|
|
2386 |
|
|
2387 |
# relogin
|
|
2388 |
app = get_app(pub)
|
|
2389 |
login(app, username='foo', password='foo')
|
|
2390 |
resp = app.get(url)
|
|
2391 |
resp = resp.form.submit('button_editable')
|
|
2392 |
resp = resp.follow()
|
|
2393 |
assert 'data-value="1"' in resp
|
|
2394 |
assert 'data-initial-display-value="hello"' in resp
|
|
2395 |
|
|
2396 |
|
2327 |
2397 |
def test_form_count_dispatching(pub):
|
2328 |
2398 |
user = create_user(pub)
|
2329 |
2399 |
|