832 |
832 |
assert [x[0] for x in resp.form['filter-4-value'].options] == ['', 'a', 'b']
|
833 |
833 |
assert [x[0] for x in resp.form['filter-5-value'].options] == ['', 'A', 'B', 'C']
|
834 |
834 |
|
|
835 |
def test_backoffice_bofield_item_filter(pub):
|
|
836 |
create_superuser(pub)
|
|
837 |
create_environment(pub)
|
|
838 |
formdef = FormDef.get_by_urlname('form-title')
|
|
839 |
workflow = Workflow.get_default_workflow()
|
|
840 |
workflow.id = '2'
|
|
841 |
workflow.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(workflow)
|
|
842 |
workflow.backoffice_fields_formdef.fields = [
|
|
843 |
fields.ItemField(id='bo0-1', label='4th field', type='item',
|
|
844 |
items=['â', 'b', 'c', 'd'],
|
|
845 |
display_locations=['validation', 'summary', 'listings'])
|
|
846 |
]
|
|
847 |
workflow.store()
|
|
848 |
formdef.workflow_id = workflow.id
|
|
849 |
formdef.store()
|
|
850 |
|
|
851 |
for i, formdata in enumerate(formdef.data_class().select()):
|
|
852 |
if i%4 == 0:
|
|
853 |
formdata.data['bo0-1'] = 'â'
|
|
854 |
formdata.data['bo0-1_display'] = 'â'
|
|
855 |
elif i%4 == 1:
|
|
856 |
formdata.data['bo0-1'] = 'b'
|
|
857 |
formdata.data['bo0-1_display'] = 'b'
|
|
858 |
elif i%4 == 2:
|
|
859 |
formdata.data['bo0-1'] = 'd'
|
|
860 |
formdata.data['bo0-1_display'] = 'd'
|
|
861 |
formdata.store()
|
|
862 |
|
|
863 |
app = login(get_app(pub))
|
|
864 |
resp = app.get('/backoffice/management/form-title/')
|
|
865 |
resp.form['filter-bo0-1'].checked = True
|
|
866 |
resp = resp.form.submit()
|
|
867 |
|
|
868 |
assert resp.form['filter-bo0-1-value'].value == ''
|
|
869 |
|
|
870 |
resp.form['filter-bo0-1-value'].value = 'â'
|
|
871 |
resp = resp.form.submit()
|
|
872 |
assert resp.text.count(u'<td>â</td>') > 0
|
|
873 |
assert resp.text.count(u'<td>b</td>') == 0
|
|
874 |
assert resp.text.count(u'<td>d</td>') == 0
|
|
875 |
|
|
876 |
resp.form['filter-bo0-1-value'].value = 'b'
|
|
877 |
resp = resp.form.submit()
|
|
878 |
assert resp.text.count(u'<td>â</td>') == 0
|
|
879 |
assert resp.text.count(u'<td>b</td>') > 0
|
|
880 |
assert resp.text.count(u'<td>d</td>') == 0
|
|
881 |
|
|
882 |
if not pub.is_using_postgresql():
|
|
883 |
# in pickle all options are always displayed
|
|
884 |
resp.form['filter-bo0-1-value'].value = 'c'
|
|
885 |
resp = resp.form.submit()
|
|
886 |
assert resp.text.count(u'<td>â</td>') == 0
|
|
887 |
assert resp.text.count(u'<td>b</td>') == 0
|
|
888 |
assert resp.text.count(u'<td>c</td>') == 0
|
|
889 |
|
|
890 |
else:
|
|
891 |
# in postgresql, option 'c' is never used so not even listed
|
|
892 |
with pytest.raises(ValueError):
|
|
893 |
resp.form['filter-bo0-1-value'].value = 'c'
|
|
894 |
|
|
895 |
# check json view used to fill select filters from javascript
|
|
896 |
resp2 = app.get(resp.request.path + 'filter-options?filter_field_id=bo0-1&' + resp.request.query_string)
|
|
897 |
assert [x['id'] for x in resp2.json['data']] == [u'â', u'b', u'd']
|
|
898 |
resp2 = app.get(resp.request.path + 'filter-options?filter_field_id=bo0-1&_search=d&' + resp.request.query_string)
|
|
899 |
assert [x['id'] for x in resp2.json['data']] == ['d']
|
|
900 |
|
|
901 |
for status in ('all', 'waiting', 'pending', 'done', 'accepted'):
|
|
902 |
resp.form['filter'] = status
|
|
903 |
resp = resp.form.submit()
|
|
904 |
resp2 = app.get(resp.request.path + 'filter-options?filter_field_id=bo0-1&' + resp.request.query_string)
|
|
905 |
if status == 'accepted':
|
|
906 |
assert [x['id'] for x in resp2.json['data']] == []
|
|
907 |
else:
|
|
908 |
assert [x['id'] for x in resp2.json['data']] == [u'â', u'b', u'd']
|
|
909 |
|
|
910 |
|
835 |
911 |
def test_backoffice_items_filter(pub):
|
836 |
912 |
create_superuser(pub)
|
837 |
913 |
create_environment(pub)
|