2355 |
2355 |
pub.site_options.write(open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w'))
|
2356 |
2356 |
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0')
|
2357 |
2357 |
assert urlopen.call_args[0][0] == 'http://reverse.example.net/?param=value&format=json&addressdetails=1&lat=0&lon=0&accept-language=en'
|
|
2358 |
|
|
2359 |
|
|
2360 |
def test_formdef_submit_structured(pub, local_user):
|
|
2361 |
Role.wipe()
|
|
2362 |
role = Role(name='test')
|
|
2363 |
role.store()
|
|
2364 |
local_user.roles = [role.id]
|
|
2365 |
local_user.store()
|
|
2366 |
|
|
2367 |
FormDef.wipe()
|
|
2368 |
formdef = FormDef()
|
|
2369 |
formdef.name = 'test'
|
|
2370 |
formdef.fields = [
|
|
2371 |
fields.ItemField(id='0', label='foobar', varname='foobar',
|
|
2372 |
data_source={
|
|
2373 |
'type': 'json',
|
|
2374 |
'value': 'http://datasource.com',
|
|
2375 |
}),
|
|
2376 |
fields.ItemField(id='1', label='foobar1', varname='foobar1',
|
|
2377 |
data_source={
|
|
2378 |
'type': 'formula',
|
|
2379 |
'value': '[dict(id=i, text=\'label %s\' % i, foo=i) for i in range(10)]',
|
|
2380 |
}),
|
|
2381 |
]
|
|
2382 |
formdef.store()
|
|
2383 |
data_class = formdef.data_class()
|
|
2384 |
|
|
2385 |
def url():
|
|
2386 |
signed_url = sign_url(
|
|
2387 |
'http://example.net/api/formdefs/test/submit'
|
|
2388 |
'?format=json&orig=coucou&email=%s' % urllib.quote(local_user.email), '1234')
|
|
2389 |
return signed_url[len('http://example.net'):]
|
|
2390 |
|
|
2391 |
with mock.patch('qommon.misc.urlopen') as urlopen:
|
|
2392 |
urlopen.side_effect = lambda *args: StringIO('''\
|
|
2393 |
{"data": [{"id": 0, "text": "zéro", "foo": "bar"}, \
|
|
2394 |
{"id": 1, "text": "uné", "foo": "bar1"}, \
|
|
2395 |
{"id": 2, "text": "deux", "foo": "bar2"}]}''')
|
|
2396 |
resp = get_app(pub).post_json(url(), {'data': {
|
|
2397 |
'0': '0',
|
|
2398 |
"1": '3',
|
|
2399 |
}})
|
|
2400 |
|
|
2401 |
formdata = data_class.get(resp.json['data']['id'])
|
|
2402 |
assert formdata.status == 'wf-new'
|
|
2403 |
assert formdata.data['0'] == '0'
|
|
2404 |
assert formdata.data['0_display'] == 'zéro'
|
|
2405 |
assert formdata.data['0_structured'] == {
|
|
2406 |
'id': 0,
|
|
2407 |
'text': 'zéro',
|
|
2408 |
'foo': 'bar',
|
|
2409 |
}
|
|
2410 |
assert formdata.data['1'] == '3'
|
|
2411 |
assert formdata.data['1_display'] == 'label 3'
|
|
2412 |
assert formdata.data['1_structured'] == {
|
|
2413 |
'id': 3,
|
|
2414 |
'text': 'label 3',
|
|
2415 |
'foo': 3,
|
|
2416 |
}
|
|
2417 |
|
|
2418 |
data_class.wipe()
|