Projet

Général

Profil

0004-tests-add-a-bunch-of-tests-on-fields-8878.patch

Frédéric Péters, 05 novembre 2015 13:12

Télécharger (6,88 ko)

Voir les différences:

Subject: [PATCH 4/4] tests: add a bunch of tests on fields (#8878)

 tests/test_admin_pages.py |  40 +++++++++++++++++
 tests/test_form_pages.py  | 108 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
tests/test_admin_pages.py
877 877
    assert resp.body.index('<legend>Additional parameters</legend>') > \
878 878
            resp.body.index('<label for="form_data_source">Data Source</label>')
879 879

  
880
def test_form_edit_item_field(pub):
881
    create_superuser(pub)
882
    create_role()
883

  
884
    FormDef.wipe()
885
    formdef = FormDef()
886
    formdef.name = 'form title'
887
    formdef.fields = [fields.ItemField(id='1', label='1st field', type='item')]
888
    formdef.store()
889

  
890
    app = login(get_app(pub))
891
    resp = app.get('/backoffice/forms/1/')
892
    resp = resp.click(href='fields/')
893
    assert '1st field' in resp.body
894

  
895
    resp = resp.click('Edit', href='1/')
896
    assert resp.forms[0]['label'].value == '1st field'
897
    resp.forms[0]['label'] = 'changed field'
898
    resp.forms[0]['required'] = False
899
    resp = resp.forms[0].submit('items$add_element')
900
    # this adds a second field
901
    assert 'items$element0' in resp.form.fields
902
    assert 'items$element1' in resp.form.fields
903
    # but don't fill anything
904
    resp = resp.forms[0].submit('submit')
905
    assert resp.location == 'http://example.net/backoffice/forms/1/fields/'
906
    resp = resp.follow()
907

  
908
    assert FormDef.get(1).fields[0].label == 'changed field'
909
    assert FormDef.get(1).fields[0].required == False
910
    assert FormDef.get(1).fields[0].items is None
911

  
912
    # edit and fill with one item
913
    resp = resp.click('Edit', href='1/')
914
    assert resp.forms[0]['label'].value == 'changed field'
915
    resp.forms[0]['items$element0'] = 'XXX'
916
    resp = resp.forms[0].submit('submit')
917
    assert resp.location == 'http://example.net/backoffice/forms/1/fields/'
918
    assert FormDef.get(1).fields[0].items == ['XXX']
919

  
880 920
def test_form_legacy_int_id(pub):
881 921
    create_superuser(pub)
882 922
    create_role()
tests/test_form_pages.py
3 3
import os
4 4
import re
5 5
import StringIO
6
import time
6 7
import zipfile
7 8
from webtest import Upload
8 9

  
......
1505 1506

  
1506 1507
    resp = login(get_app(pub), username='foo', password='foo').get('/test/')
1507 1508
    assert resp.forms[0]['f0'].value == 'foo@localhost'
1509

  
1510
def test_form_date_field_submit(pub):
1511
    formdef = create_formdef()
1512
    formdef.fields = [fields.DateField(id='0', label='string', type='date',
1513
        required=False)]
1514
    formdef.store()
1515
    resp = get_app(pub).get('/test/')
1516
    formdef.data_class().wipe()
1517
    resp.forms[0]['f0'] = '2015-01-01'
1518
    resp = resp.forms[0].submit('submit')
1519
    assert 'Check values then click submit.' in resp.body
1520
    resp = resp.forms[0].submit('submit')
1521
    assert resp.status_int == 302
1522
    resp = resp.follow()
1523
    assert 'The form has been recorded' in resp.body
1524
    assert formdef.data_class().count() == 1
1525
    data_id = formdef.data_class().select()[0].id
1526
    data = formdef.data_class().get(data_id)
1527
    assert time.strftime('%Y-%m-%d', data.data['0']) == '2015-01-01'
1528

  
1529
    # without filling the field
1530
    resp = get_app(pub).get('/test/')
1531
    formdef.data_class().wipe()
1532
    resp = resp.forms[0].submit('submit')
1533
    assert 'Check values then click submit.' in resp.body
1534
    resp = resp.forms[0].submit('submit')
1535
    assert resp.status_int == 302
1536
    resp = resp.follow()
1537
    assert 'The form has been recorded' in resp.body
1538
    assert formdef.data_class().count() == 1
1539
    data_id = formdef.data_class().select()[0].id
1540
    data = formdef.data_class().get(data_id)
1541
    assert data.data['0'] is None
1542

  
1543
def test_form_string_regex_field_submit(pub):
1544
    formdef = create_formdef()
1545
    formdef.fields = [fields.StringField(id='0', label='string', type='string',
1546
        validation=r'\d{5}$', required=False)]
1547
    formdef.store()
1548

  
1549
    formdef.data_class().wipe()
1550
    resp = get_app(pub).get('/test/')
1551
    resp.forms[0]['f0'] = '12345'
1552
    resp = resp.forms[0].submit('submit')
1553
    assert 'Check values then click submit.' in resp.body
1554
    resp = resp.forms[0].submit('submit')
1555
    assert resp.status_int == 302
1556
    resp = resp.follow()
1557
    assert 'The form has been recorded' in resp.body
1558
    assert formdef.data_class().count() == 1
1559
    data_id = formdef.data_class().select()[0].id
1560
    data = formdef.data_class().get(data_id)
1561
    assert data.data['0'] == '12345'
1562

  
1563
    # without filling the field
1564
    formdef.data_class().wipe()
1565
    resp = get_app(pub).get('/test/')
1566
    resp = resp.forms[0].submit('submit')
1567
    assert 'Check values then click submit.' in resp.body
1568
    resp = resp.forms[0].submit('submit')
1569
    assert resp.status_int == 302
1570
    resp = resp.follow()
1571
    assert 'The form has been recorded' in resp.body
1572
    assert formdef.data_class().count() == 1
1573
    data_id = formdef.data_class().select()[0].id
1574
    data = formdef.data_class().get(data_id)
1575
    assert data.data['0'] is None
1576

  
1577
    # with an invalid input
1578
    formdef.data_class().wipe()
1579
    resp = get_app(pub).get('/test/')
1580
    resp.forms[0]['f0'] = 'foobar'
1581
    resp = resp.forms[0].submit('submit')
1582
    assert 'wrong format' in resp.body
1583

  
1584
def test_form_text_field_submit(pub):
1585
    formdef = create_formdef()
1586
    formdef.fields = [fields.TextField(id='0', label='string', type='text', required=False)]
1587
    formdef.store()
1588

  
1589
    formdef.data_class().wipe()
1590
    resp = get_app(pub).get('/test/')
1591
    resp.forms[0]['f0'] = '12345'
1592
    resp = resp.forms[0].submit('submit')
1593
    assert 'Check values then click submit.' in resp.body
1594
    resp = resp.forms[0].submit('submit')
1595
    assert resp.status_int == 302
1596
    resp = resp.follow()
1597
    assert 'The form has been recorded' in resp.body
1598
    assert formdef.data_class().count() == 1
1599
    data_id = formdef.data_class().select()[0].id
1600
    data = formdef.data_class().get(data_id)
1601
    assert data.data['0'] == '12345'
1602

  
1603
    # without filling the field
1604
    formdef.data_class().wipe()
1605
    resp = get_app(pub).get('/test/')
1606
    resp = resp.forms[0].submit('submit')
1607
    assert 'Check values then click submit.' in resp.body
1608
    resp = resp.forms[0].submit('submit')
1609
    assert resp.status_int == 302
1610
    resp = resp.follow()
1611
    assert 'The form has been recorded' in resp.body
1612
    assert formdef.data_class().count() == 1
1613
    data_id = formdef.data_class().select()[0].id
1614
    data = formdef.data_class().get(data_id)
1615
    assert data.data['0'] is None
1508
-