Projet

Général

Profil

0004-tests-check-geojson-API-with-full-on-and-related-car.patch

Frédéric Péters, 18 décembre 2022 11:30

Télécharger (3,16 ko)

Voir les différences:

Subject: [PATCH 4/5] tests: check geojson API with full=on and related card
 file field (#72312)

 tests/api/test_formdata.py | 59 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
tests/api/test_formdata.py
16 16
from wcs.admin.settings import UserFieldsFormDef
17 17
from wcs.api_access import ApiAccess
18 18
from wcs.blocks import BlockDef
19
from wcs.carddef import CardDef
19 20
from wcs.categories import Category
20 21
from wcs.data_sources import NamedDataSource
21 22
from wcs.formdata import Evolution
......
2397 2398
    resp = get_app(pub).get(sign_uri('/api/forms/test/geojson', user=local_user), status=404)
2398 2399

  
2399 2400

  
2401
def test_api_geojson_formdata_related_field(pub, local_user):
2402
    pub.role_class.wipe()
2403
    role = pub.role_class(name='test')
2404
    role.store()
2405

  
2406
    # add role to user
2407
    local_user.roles = [role.id]
2408
    local_user.store()
2409

  
2410
    CardDef.wipe()
2411
    carddef = CardDef()
2412
    carddef.name = 'test'
2413
    carddef.fields = [
2414
        fields.FileField(id='1', label='foobar', type='file'),
2415
    ]
2416
    carddef.digest_templates = {'default': 'plop'}
2417
    carddef.store()
2418

  
2419
    FormDef.wipe()
2420
    formdef = FormDef()
2421
    formdef.name = 'test'
2422
    formdef.workflow_roles = {'_receiver': role.id}
2423
    formdef.fields = [
2424
        fields.ItemField(
2425
            id='1', label='item', type='item', varname='foo', data_source={'type': 'carddef:test'}
2426
        ),
2427
    ]
2428
    formdef.geolocations = {'base': 'Location'}
2429
    formdef.store()
2430

  
2431
    data_class = formdef.data_class()
2432
    data_class.wipe()
2433
    upload = PicklableUpload('test.txt', 'text/plain', 'ascii')
2434
    upload.receive([b'base64me'])
2435
    carddata = carddef.data_class()()
2436
    carddata.data = {'1': upload}
2437
    carddata.just_created()
2438
    carddata.store()
2439

  
2440
    formdata = formdef.data_class()()
2441
    formdata.data = {'1': str(carddata.id)}
2442
    formdata.data['1_display'] = formdef.fields[0].store_display_value(formdata.data, '1')
2443
    formdata.data['1_structured'] = formdef.fields[0].store_structured_value(formdata.data, '1')
2444
    formdata.geolocations = {'base': {'lat': 48, 'lon': 2}}
2445
    formdata.just_created()
2446
    formdata.store()
2447

  
2448
    resp = get_app(pub).get(sign_uri('/api/forms/test/geojson?filter=all', user=local_user))
2449
    assert len(resp.json['features']) == 1
2450
    assert resp.json['features'][0]['properties']['id'] == '1-1'
2451

  
2452
    # check full=on
2453
    resp = get_app(pub).get(sign_uri('/api/forms/test/geojson?filter=all&full=on', user=local_user))
2454
    assert len(resp.json['features']) == 1
2455
    properties = {x['label']: x['value'] for x in resp.json['features'][0]['properties']['display_fields']}
2456
    assert properties['item - foobar'] == 'test.txt'
2457

  
2458

  
2400 2459
def test_api_distance_filter(pub, local_user):
2401 2460
    pub.role_class.wipe()
2402 2461
    role = pub.role_class(name='test')
2403
-