def test_export_works_if_no_version_value_provided_in_submission(self): submissions = self.asset.deployment._get_submissions() for submission in submissions: del submission['__version__'] values = report_data.data_by_identifiers(self.asset, field_names=['Date', 'Decimal'], submission_stream=submissions) (date_stats, decimal_stats) = values self.assertEqual(date_stats['data'], { 'provided': 4, 'total_count': 4, 'stdev': 0.9574271077563381, 'median': 3.0, 'show_graph': False, 'mode': 3.5, 'not_provided': 0, 'mean': 2.75, }) self.assertEqual(decimal_stats['data'], { u'provided': 4, u'frequencies': (1, 1, 1, 1), u'show_graph': True, u'not_provided': 0, u'total_count': 4, u'responses': (u'2016-06-01', u'2016-06-02', u'2016-06-03', u'2016-06-05'), u'percentages': (25.0, 25.0, 25.0, 25.0), })
def test_kobo_apps_reports_report_data_split_by(self): values = report_data.data_by_identifiers( self.asset, split_by="Select_one", field_names=["Date"], submission_stream=self.submissions) self.assertEqual(values[0]['data']['values'], [ (u'2016-06-01', { u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0) }), (u'2016-06-02', { u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0) }), (u'2016-06-03', { u'responses': (u'First option', u'Second option'), u'frequencies': (0, 1), u'percentages': (0.0, 25.0) }), (u'2016-06-05', { u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0) }), ])
def test_export_works_if_no_version_value_provided_in_submission(self): submissions = self.asset.deployment._get_submissions() for submission in submissions: del submission['__version__'] values = report_data.data_by_identifiers(self.asset, field_names=['Date', 'Decimal'], submission_stream=submissions) (date_stats, decimal_stats) = values self.assertEqual(date_stats['data'], { 'provided': 4, 'total_count': 4, 'stdev': 0.9574271077563381, 'median': 3.0, 'show_graph': False, 'mode': 3.5, 'not_provided': 0, 'mean': 2.75, }) self.assertEqual(decimal_stats['data'], { u'provided': 4, u'frequencies': (1, 1, 1, 1), u'show_graph': True, u'not_provided': 0, u'total_count': 4, u'responses': (u'2016-06-01', u'2016-06-02', u'2016-06-03', u'2016-06-05'), u'percentages': (25.0, 25.0, 25.0, 25.0), })
def test_kobo_apps_reports_report_data_subset(self): values = report_data.data_by_identifiers(self.asset, field_names=('Select_one',), submission_stream=self.submissions) self.assertEqual(values[0]['data']['frequencies'], (3, 1)) self.assertEqual(values[0]['row']['type'], 'select_one') self.assertEqual(values[0]['data']['percentages'], (75, 25)) self.assertEqual(values[0]['data']['responses'], (u'First option', u'Second option'))
def test_kobo_apps_reports_report_data_subset(self): values = report_data.data_by_identifiers(self.asset, field_names=('Select_one',), submission_stream=self.submissions) self.assertEqual(values[0]['data']['frequencies'], (3, 1)) self.assertEqual(values[0]['row']['type'], 'select_one') self.assertEqual(values[0]['data']['percentages'], (75, 25)) self.assertEqual(values[0]['data']['responses'], (u'First option', u'Second option'))
def test_kobo_apps_reports_report_data(self): values = report_data.data_by_identifiers(self.asset, submission_stream=self.submissions) expected_names = ["start", "end", "Select_one", "Select_Many", "Text", "Number", "Decimal", "Date", "Time", "Date_and_time", "GPS", "Photo", "Audio", "Video", "Barcode", "Acknowledge", "calculation"] self.assertEqual([v['name'] for v in values], expected_names) self.assertEqual(len(values), 17)
def test_kobo_apps_reports_report_data(self): values = report_data.data_by_identifiers(self.asset, submission_stream=self.submissions) expected_names = ["start", "end", "Select_one", "Select_Many", "Text", "Number", "Decimal", "Date", "Time", "Date_and_time", "GPS", "Photo", "Audio", "Video", "Barcode", "Acknowledge", "calculation"] self.assertEqual([v['name'] for v in values], expected_names) self.assertEqual(len(values), 17)
def test_kobo_apps_reports_report_data_translation(self): values = report_data.data_by_identifiers(self.asset, lang='Arabic', field_names=('Select_one',), submission_stream=self.submissions) self.assertEqual(values[0]['data']['responses'], ( # response 1 in Arabic u'\u0627\u0644\u062e\u064a\u0627\u0631 ' u'\u0627\u0644\u0623\u0648\u0644', # response 2 in Arabic u'\u0627\u0644\u062e\u064a\u0627\u0631 ' u'\u0627\u0644\u062b\u0627\u0646\u064a'))
def test_kobo_apps_reports_report_data_split_by_translated(self): values = report_data.data_by_identifiers(self.asset, split_by="Select_one", lang="Arabic", field_names=["Date"], submission_stream=self.submissions) responses = set() for rv in OrderedDict(values[0]['data']['values']).values(): responses.update(rv.get('responses')) expected = set([u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0623\u0648\u0644', u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u062b\u0627\u0646\u064a']) self.assertEqual(responses, expected)
def test_kobo_apps_reports_report_data_translation(self): values = report_data.data_by_identifiers(self.asset, lang='Arabic', field_names=('Select_one',), submission_stream=self.submissions) self.assertEqual(values[0]['data']['responses'], ( # response 1 in Arabic u'\u0627\u0644\u062e\u064a\u0627\u0631 ' u'\u0627\u0644\u0623\u0648\u0644', # response 2 in Arabic u'\u0627\u0644\u062e\u064a\u0627\u0631 ' u'\u0627\u0644\u062b\u0627\u0646\u064a'))
def test_kobo_apps_reports_report_data_split_by_translated(self): values = report_data.data_by_identifiers(self.asset, split_by="Select_one", lang="Arabic", field_names=["Date"], submission_stream=self.submissions) responses = set() for rv in OrderedDict(values[0]['data']['values']).values(): responses.update(rv.get('responses')) expected = set([u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u0623\u0648\u0644', u'\u0627\u0644\u062e\u064a\u0627\u0631 \u0627\u0644\u062b\u0627\u0646\u064a']) self.assertEqual(responses, expected)
def to_representation(self, obj): request = self.context['request'] if 'names' in request.query_params: vnames = filter(lambda x: len(x) > 1, request.query_params.get('names', '').split(',')) else: vnames = None split_by = request.query_params.get('split_by', None) submission_stream = obj.deployment.get_submissions(request.user.id) _list = report_data.data_by_identifiers( obj, vnames, split_by=split_by, submission_stream=submission_stream) return { 'url': reverse('asset-reports', args=(obj.uid, ), request=request), 'count': len(_list), 'list': _list, }
def test_kobo_apps_reports_report_data_split_by(self): values = report_data.data_by_identifiers(self.asset, split_by="Select_one", field_names=["Date"], submission_stream=self.submissions) self.assertEqual(values[0]['data']['values'], [ (u'2016-06-01', {u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0)}), (u'2016-06-02', {u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0)}), (u'2016-06-03', {u'responses': (u'First option', u'Second option'), u'frequencies': (0, 1), u'percentages': (0.0, 25.0)}), (u'2016-06-05', {u'responses': (u'First option', u'Second option'), u'frequencies': (1, 0), u'percentages': (25.0, 0.0)}), ])