tests: add some new statistics tests (#73770)

This commit is contained in:
Valentin Deniaud 2023-01-17 18:05:06 +01:00
parent b32d5edfd5
commit ad0f4413d3
1 changed files with 38 additions and 2 deletions

View File

@ -563,6 +563,23 @@ def test_statistics_forms_count_subfilters(pub, formdef):
new_resp = get_app(pub).get(sign_uri('/api/statistics/forms/count/?form=%s' % formdef.url_name))
assert new_resp.json == resp.json
# add items field inside block field, it should not appear
items_field = fields.ItemsField(
id='2',
varname='items',
label='Block items',
type='items',
items=['foo', 'bar', 'baz'],
anonymise=False,
display_locations=['statistics'],
)
formdef.fields[2].block.fields.append(bool_field)
formdef.store()
formdata.data['4'] = {'data': [{'2': ['bar']}]}
formdata.store()
new_resp = get_app(pub).get(sign_uri('/api/statistics/forms/count/?form=%s' % formdef.url_name))
assert new_resp.json == resp.json
# remove fields and statuses
workflow = Workflow(name='Empty wf')
workflow.store()
@ -587,7 +604,7 @@ def test_statistics_forms_count_subfilters_query(pub, formdef):
formdata.data['1'] = True
formdata.data['2'] = 'foo'
formdata.data['3'] = ['bar', 'baz']
formdata.data['4'] = {'data': [{'1': True}]}
formdata.data['4'] = {'data': [{'1': True}, {'1': False}]}
elif i % 2:
formdata.data['1'] = False
formdata.data['2'] = 'baz'
@ -646,7 +663,7 @@ def test_statistics_forms_count_subfilters_query(pub, formdef):
assert resp.json['data']['series'][0]['data'][0] == 13
resp = get_app(pub).get(sign_uri(url + '&filter-blockdata_bool=false'))
assert resp.json['data']['series'][0]['data'][0] == 3
assert resp.json['data']['series'][0]['data'][0] == 16
# filter on status
resp = get_app(pub).get(sign_uri(url + '&filter-status=_all'))
@ -718,6 +735,25 @@ def test_statistics_forms_count_subfilters_query_same_varname(pub, formdef):
assert resp.json['data']['series'] == [{'data': [], 'label': 'Forms Count'}]
def test_statistics_forms_count_subfilters_query_integer_items(pub, formdef):
for i in range(10):
formdata = formdef.data_class()()
formdata.just_created()
if i % 2:
formdata.data['3'] = ['1', '2']
else:
formdata.data['3'] = ['1']
formdata.receipt_time = datetime.datetime(2021, 1, 1, 0, 0).timetuple()
formdata.store()
url = '/api/statistics/forms/count/?form=%s' % formdef.url_name
resp = get_app(pub).get(sign_uri(url + '&filter-test-items=1'))
assert resp.json['data']['series'][0]['data'][0] == 10
resp = get_app(pub).get(sign_uri(url + '&filter-test-items=2'))
assert resp.json['data']['series'][0]['data'][0] == 5
@pytest.mark.parametrize('anonymise', [False, True])
def test_statistics_forms_count_group_by(pub, formdef, anonymise):
for i in range(20):