示例#1
0
 def test_split_select_multiples_values(self):
     """
     Test select multiples choices are split and their values as the data.
     """
     self._publish_nested_repeats_form()
     self._submit_fixture_instance("nested_repeats", "01")
     csv_df_builder = CSVDataFrameBuilder(self.user.username,
                                          self.xform.id_string,
                                          include_images=False)
     # pylint: disable=protected-access
     cursor = [k for k in csv_df_builder._query_data()]
     record = cursor[0]
     select_multiples = \
         CSVDataFrameBuilder._collect_select_multiples(self.xform)
     result = CSVDataFrameBuilder._split_select_multiples(
         record, select_multiples, value_select_multiples=True)
     expected_result = {
         u'web_browsers/ie': u'ie',
         u'web_browsers/safari': u'safari',
         u'web_browsers/firefox': None,
         u'web_browsers/chrome': None
     }
     # build a new dictionary only composed of the keys we want to use in
     # the comparison
     result = dict([(key, result[key]) for key in list(result)
                    if key in list(expected_result)])
     self.assertEqual(expected_result, result)
示例#2
0
 def test_split_select_multiples(self):
     self._publish_nested_repeats_form()
     self._submit_fixture_instance("nested_repeats", "01")
     csv_df_builder = CSVDataFrameBuilder(self.user.username,
                                          self.xform.id_string,
                                          include_images=False)
     cursor = [k for k in csv_df_builder._query_data()]
     record = cursor[0]
     select_multiples = \
         CSVDataFrameBuilder._collect_select_multiples(self.xform)
     result = CSVDataFrameBuilder._split_select_multiples(
         record, select_multiples)
     expected_result = {
         u'web_browsers/ie': True,
         u'web_browsers/safari': True,
         u'web_browsers/firefox': False,
         u'web_browsers/chrome': False
     }
     # build a new dictionary only composed of the keys we want to use in
     # the comparison
     result = dict([(key, result[key]) for key in result.keys()
                    if key in expected_result.keys()])
     self.assertEqual(expected_result, result)
     csv_df_builder = CSVDataFrameBuilder(self.user.username,
                                          self.xform.id_string,
                                          binary_select_multiples=True)
     result = csv_df_builder._split_select_multiples(
         record, select_multiples)
     expected_result = {
         u'web_browsers/ie': 1,
         u'web_browsers/safari': 1,
         u'web_browsers/firefox': 0,
         u'web_browsers/chrome': 0
     }
     # build a new dictionary only composed of the keys we want to use in
     # the comparison
     result = dict([(key, result[key]) for key in result.keys()
                    if key in expected_result.keys()])
     self.assertEqual(expected_result, result)
 def test_split_select_multiples(self):
     self._publish_nested_repeats_form()
     dd = self.xform.data_dictionary()
     self._submit_fixture_instance("nested_repeats", "01")
     csv_df_builder = CSVDataFrameBuilder(self.user.username,
                                          self.xform.id_string)
     cursor = [k for k in csv_df_builder._query_data()]
     record = cursor[0]
     select_multiples = CSVDataFrameBuilder._collect_select_multiples(dd)
     result = CSVDataFrameBuilder._split_select_multiples(record,
                                                          select_multiples)
     expected_result = {
         u'web_browsers/ie': True,
         u'web_browsers/safari': True,
         u'web_browsers/firefox': False,
         u'web_browsers/chrome': False
     }
     # build a new dictionary only composed of the keys we want to use in
     # the comparison
     result = dict([(key, result[key]) for key in result.keys() if key in
                    expected_result.keys()])
     self.assertEqual(expected_result, result)
     csv_df_builder = CSVDataFrameBuilder(self.user.username,
                                          self.xform.id_string,
                                          binary_select_multiples=True)
     result = csv_df_builder._split_select_multiples(record,
                                                     select_multiples)
     expected_result = {
         u'web_browsers/ie': 1,
         u'web_browsers/safari': 1,
         u'web_browsers/firefox': 0,
         u'web_browsers/chrome': 0
     }
     # build a new dictionary only composed of the keys we want to use in
     # the comparison
     result = dict([(key, result[key]) for key in result.keys() if key in
                    expected_result.keys()])
     self.assertEqual(expected_result, result)
 def test_split_select_multiples_within_repeats(self):
     self.maxDiff = None
     record = {
         'name': 'Tom',
         'age': 23,
         'browser_use': [
             {
                 'browser_use/year': '2010',
                 'browser_use/browsers': 'firefox safari'
             },
             {
                 'browser_use/year': '2011',
                 'browser_use/browsers': 'firefox chrome'
             }
         ]
     }
     expected_result = {
         'name': 'Tom',
         'age': 23,
         'browser_use': [
             {
                 'browser_use/year': '2010',
                 'browser_use/browsers/firefox': True,
                 'browser_use/browsers/safari': True,
                 'browser_use/browsers/ie': False,
                 'browser_use/browsers/chrome': False
             },
             {
                 'browser_use/year': '2011',
                 'browser_use/browsers/firefox': True,
                 'browser_use/browsers/safari': False,
                 'browser_use/browsers/ie': False,
                 'browser_use/browsers/chrome': True
             }
         ]
     }
     select_multiples = {
         'browser_use/browsers': [
             'browser_use/browsers/firefox',
             'browser_use/browsers/safari',
             'browser_use/browsers/ie',
             'browser_use/browsers/chrome']}
     result = CSVDataFrameBuilder._split_select_multiples(record,
                                                          select_multiples)
     self.assertEqual(expected_result, result)
示例#5
0
 def test_split_select_multiples_within_repeats(self):
     self.maxDiff = None
     record = {
         'name':
         'Tom',
         'age':
         23,
         'browser_use': [{
             'browser_use/year': '2010',
             'browser_use/browsers': 'firefox safari'
         }, {
             'browser_use/year': '2011',
             'browser_use/browsers': 'firefox chrome'
         }]
     }
     expected_result = {
         'name':
         'Tom',
         'age':
         23,
         'browser_use': [{
             'browser_use/year': '2010',
             'browser_use/browsers/firefox': True,
             'browser_use/browsers/safari': True,
             'browser_use/browsers/ie': False,
             'browser_use/browsers/chrome': False
         }, {
             'browser_use/year': '2011',
             'browser_use/browsers/firefox': True,
             'browser_use/browsers/safari': False,
             'browser_use/browsers/ie': False,
             'browser_use/browsers/chrome': True
         }]
     }
     select_multiples = {
         'browser_use/browsers': [
             'browser_use/browsers/firefox', 'browser_use/browsers/safari',
             'browser_use/browsers/ie', 'browser_use/browsers/chrome'
         ]
     }
     result = CSVDataFrameBuilder._split_select_multiples(
         record, select_multiples)
     self.assertEqual(expected_result, result)
示例#6
0
 def test_split_select_multiples_within_repeats(self):
     """
     Test select multiples choices are split within repeats in CSV exports.
     """
     self.maxDiff = None
     record = {
         'name': 'Tom',
         'age': 23,
         'browser_use': [{
             'browser_use/year': '2010',
             'browser_use/browsers': 'firefox safari'
         }, {
             'browser_use/year': '2011',
             'browser_use/browsers': 'firefox chrome'
         }]
     }  # yapf: disable
     expected_result = {
         'name': 'Tom',
         'age': 23,
         'browser_use': [{
             'browser_use/year': '2010',
             'browser_use/browsers/firefox': True,
             'browser_use/browsers/safari': True,
             'browser_use/browsers/ie': False,
             'browser_use/browsers/chrome': False
         }, {
             'browser_use/year': '2011',
             'browser_use/browsers/firefox': True,
             'browser_use/browsers/safari': False,
             'browser_use/browsers/ie': False,
             'browser_use/browsers/chrome': True
         }]
     }  # yapf: disable
     select_multiples = {
         'browser_use/browsers': [
             'browser_use/browsers/firefox', 'browser_use/browsers/safari',
             'browser_use/browsers/ie', 'browser_use/browsers/chrome'
         ]
     }
     # pylint: disable=protected-access
     result = CSVDataFrameBuilder._split_select_multiples(
         record, select_multiples)
     self.assertEqual(expected_result, result)