def add_surveys(self): if not hasattr(self, "_dict_organizer"): self._dict_organizer = DictOrganizer() for i in self._data_dictionary.xform.surveys.iterator(): d = xform_instance_to_dict(i.xml) obs = self._dict_organizer.get_observation_from_dict(d) self.add_obs(obs)
def test_parse_xform_instance(self): # todo: need to test id string as well for d in self.inputs_and_outputs: self.assertEqual(xform_instance_to_dict(d[XML]), d[DICT]) self.assertEqual(xform_instance_to_flat_dict(d[XML]), d[FLAT_DICT]) flat_dict_with_id = {ID: d[ID]} flat_dict_with_id.update(d[FLAT_DICT]) self.assertEqual(parse_xform_instance(d[XML]), flat_dict_with_id)
def test_dict_organizer(self): serious_xml = u""" <?xml version=\'1.0\' ?> <household> <number_of_members>10</number_of_members> <man><name>Alex</name></man> <man><name>Bob</name></man> <woman> <name>Carla</name> <child><name>Danny</name></child> <child><name>Ed</name></child> </woman> <woman> <name>Fran</name> <child><name>Greg</name></child> </woman> </household>""" serious_xml = re.sub(r">\s+<", "><", serious_xml) d = xform_instance_to_dict(serious_xml) dict_organizer = DictOrganizer() expected_dict = { u"household": [ {u"_parent_table_name": u"", u"_parent_index": -1, u"number_of_members": u"10", u"_index": 0} ], u"woman": [ {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Carla", u"_index": 0}, {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Fran", u"_index": 1}, ], u"man": [ {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Alex", u"_index": 0}, {u"_parent_table_name": u"household", u"_parent_index": 0, u"name": u"Bob", u"_index": 1}, ], u"child": [ {u"_parent_table_name": u"woman", u"_parent_index": 0, u"name": u"Danny", u"_index": 0}, {u"_parent_table_name": u"woman", u"_parent_index": 0, u"name": u"Ed", u"_index": 1}, {u"_parent_table_name": u"woman", u"_parent_index": 1, u"name": u"Greg", u"_index": 2}, ], } self.assertEqual(dict_organizer.get_observation_from_dict(d), expected_dict)