2308 |
2308 |
pub.site_options.write(open(os.path.join(pub.app_dir, 'site-options.cfg'), 'w'))
|
2309 |
2309 |
resp = get_app(pub).get('/api/reverse-geocoding?lat=0&lon=0')
|
2310 |
2310 |
assert urlopen.call_args[0][0] == 'http://reverse.example.net/?param=value&format=json&addressdetails=1&lat=0&lon=0&accept-language=en'
|
|
2311 |
|
|
2312 |
|
|
2313 |
def test_formdef_submit_structured(pub, local_user):
|
|
2314 |
Role.wipe()
|
|
2315 |
role = Role(name='test')
|
|
2316 |
role.store()
|
|
2317 |
local_user.roles = [role.id]
|
|
2318 |
local_user.store()
|
|
2319 |
|
|
2320 |
FormDef.wipe()
|
|
2321 |
formdef = FormDef()
|
|
2322 |
formdef.name = 'test'
|
|
2323 |
formdef.fields = [
|
|
2324 |
fields.ItemField(id='0', label='foobar', varname='foobar',
|
|
2325 |
data_source={
|
|
2326 |
'type': 'json',
|
|
2327 |
'value': 'http://datasource.com',
|
|
2328 |
}),
|
|
2329 |
fields.ItemField(id='1', label='foobar1', varname='foobar1',
|
|
2330 |
data_source={
|
|
2331 |
'type': 'formula',
|
|
2332 |
'value': '[dict(id=i, text=\'label %s\' % i, foo=i) for i in range(10)]',
|
|
2333 |
}),
|
|
2334 |
]
|
|
2335 |
formdef.store()
|
|
2336 |
data_class = formdef.data_class()
|
|
2337 |
|
|
2338 |
def url():
|
|
2339 |
signed_url = sign_url(
|
|
2340 |
'http://example.net/api/formdefs/test/submit'
|
|
2341 |
'?format=json&orig=coucou&email=%s' % urllib.quote(local_user.email), '1234')
|
|
2342 |
return signed_url[len('http://example.net'):]
|
|
2343 |
|
|
2344 |
with mock.patch('qommon.misc.urlopen') as urlopen:
|
|
2345 |
urlopen.side_effect = lambda *args: StringIO('''\
|
|
2346 |
{"data": [{"id": 0, "text": "zéro", "foo": "bar"}, \
|
|
2347 |
{"id": 1, "text": "uné", "foo": "bar1"}, \
|
|
2348 |
{"id": 2, "text": "deux", "foo": "bar2"}]}''')
|
|
2349 |
resp = get_app(pub).post_json(url(), {'data': {
|
|
2350 |
'0': '0',
|
|
2351 |
"1": '3',
|
|
2352 |
}})
|
|
2353 |
|
|
2354 |
formdata = data_class.get(resp.json['data']['id'])
|
|
2355 |
assert formdata.status == 'wf-new'
|
|
2356 |
assert formdata.data['0'] == '0'
|
|
2357 |
assert formdata.data['0_display'] == 'zéro'
|
|
2358 |
assert formdata.data['0_structured'] == {
|
|
2359 |
'id': 0,
|
|
2360 |
'text': 'zéro',
|
|
2361 |
'foo': 'bar',
|
|
2362 |
}
|
|
2363 |
assert formdata.data['1'] == '3'
|
|
2364 |
assert formdata.data['1_display'] == 'label 3'
|
|
2365 |
assert formdata.data['1_structured'] == {
|
|
2366 |
'id': 3,
|
|
2367 |
'text': 'label 3',
|
|
2368 |
'foo': 3,
|
|
2369 |
}
|
|
2370 |
|
|
2371 |
data_class.wipe()
|