Пример #1
0
    def testSaveFormData_8(self):
        """ Test repeated form definition created and data saved """
        formdefmodel = create_xsd_and_populate("data/8_singlerepeat_2.xsd", domain=self.domain)
        self.assertEquals(int(formdefmodel.version), 2)
        self.assertEquals(int(formdefmodel.uiversion), 3)

        submission = populate("data/8_singlerepeat_2.xml", self.domain)
        m = Metadata.objects.get(attachment__submission=submission)
        self.assertEquals(int(m.version), 2)
        self.assertEquals(int(m.uiversion), 2)
        
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM schema_versioneddomain_xml_singlerepeat_2")
        try:
            row = cursor.fetchone()
            self.assertEquals(row[9],"deviceid0")
            self.assertEquals(row[10],"starttime")
            self.assertEquals(row[11],"endtime")
            cursor.execute("SELECT * FROM schema_versioneddomain_xml_singlerepeat_root_userid_2")
            row = cursor.fetchall()
            self.assertEquals(row[0][1],"userid0")
            self.assertEquals(row[1][1],"userid2")
            self.assertEquals(row[2][1],"userid3")
            self.assertEquals(row[0][2],1)
            self.assertEquals(row[1][2],1)
            self.assertEquals(row[2][2],1)
        finally:
            manager = XFormManager()
            manager.remove_schema(formdefmodel.id)
Пример #2
0
 def testReSubmit(self):
     # original submission
     submission = populate("data/pf_followup_1.xml", domain=self.domain)
     self.assertEquals(submission.is_orphaned(),True)
     # register schema
     create_xsd_and_populate("data/pf_followup.xsd", domain=self.domain)
     # xformmanagger resubmission
     xformmanager = XFormManager()
     status = xformmanager.save_form_data(submission.xform)
     self.assertEquals(status,True)
Пример #3
0
    def _testErrors(self, schema_file, instance_file, id):
        su = SU()
        xfm = XFM()
        xsd_file_name = os.path.join(os.path.dirname(__file__),schema_file)
        xml_file_name = os.path.join(os.path.dirname(__file__),instance_file)

        schema = xfm._add_schema_from_file(xsd_file_name)
        formdef = su.get_formdef_from_schema_file(xsd_file_name)
        data_tree = su._get_data_tree_from_file(xml_file_name)
        populator = XFormDBTablePopulator( formdef, schema )
        queries = populator.populate( data_tree )
        xfm.remove_schema(schema.id)
        return populator.errors
Пример #4
0
 def testSaveFormData_7(self):
        """ Test very deep form definition created and data saved """
        formdefmodel = create_xsd_and_populate("data/7_verydeep_2.xsd", "data/7_verydeep_2.xml", self.domain)
        cursor = connection.cursor()
        cursor.execute("SELECT * FROM schema_versioneddomain_xml_verydeep_1")
        row = cursor.fetchone()
        try:
            self.assertEquals(row[9],"userid0")
            self.assertEquals(row[10],"great_grand1")
            self.assertEquals(row[11],222)
            self.assertEquals(row[12],1159)
            self.assertEquals(row[13],2002)
        finally:
            manager = XFormManager()
            manager.remove_schema(formdefmodel.id)
Пример #5
0
def create_xsd(xsd_file_name, domain=None, path=None):
    if not path:
        path = os.path.dirname(__file__)
    xsd_file_path = os.path.join(path,xsd_file_name)
    if xsd_file_name is None:
        return None
    f = open(xsd_file_path,"r")
    manager = XFormManager()
    formdefmodel = manager.add_schema(xsd_file_name, f, domain)
    f.close()
    # fake out the form submission
    formdefmodel.submit_ip = '127.0.0.1'
    formdefmodel.bytes_received =  os.path.getsize(xsd_file_path)
    formdefmodel.form_display_name = 'mock display name'             
    formdefmodel.domain = domain
    formdefmodel.save()
    return formdefmodel
Пример #6
0
    def test4DeleteInstance(self):
        """ Test instance data deletion from XFormmanager """
        formdefmodel_5 = create_xsd_and_populate("5_singlerepeat.xsd", domain=self.domain)
        instance_5 = populate("5_singlerepeat.xml", self.domain)
        formdefmodel_6 = create_xsd_and_populate("6_nestedrepeats.xsd", domain=self.domain)
        instance_6 = populate("6_nestedrepeats.xml", self.domain)
        xformmanager = XFormManager()

        num_handled = SubmissionHandlingOccurrence.objects.all().count()
        self.assertEquals(2,num_handled)
        count = Metadata.objects.all().count()
        self.assertEquals(2,count)
        
        # TODO - change this syntax once meta.attachment becomes meta.submission
        xformmanager.remove_data(formdefmodel_5.id, instance_5.xform.form_metadata.all()[0].raw_data )
        xformmanager.remove_data(formdefmodel_6.id, instance_6.xform.form_metadata.all()[0].raw_data )
        # test metadata deletion

        # Test that children have been marked as 'deleted' and are no longer 'initially handled'
        # (so that they are not considered 'orphans' i.e. unhandled)
        num_handled = SubmissionHandlingOccurrence.objects.all().count()
        self.assertEquals(2,num_handled)
        for handle_means in SubmissionHandlingOccurrence.objects.all():
            self.assertEqual("deleted", handle_means.handled.method)
        self.assertFalse(instance_5.is_orphaned())        
        self.assertFalse(instance_6.is_orphaned())        
        
        count = Metadata.objects.all().count()
        self.assertEquals(0,count)
        # test raw data deletion
        if settings.DATABASE_ENGINE == 'mysql':
            cursor = connection.cursor()
            cursor.execute("SELECT * FROM schema_remdomain_xml_singlerepeat")
            row = cursor.fetchall()
            self.assertEquals(len(row),0)
            cursor.execute("SELECT * FROM schema_remdomain_xml_singlerepeat_root_userid")
            row = cursor.fetchone()
            self.assertEquals(row,None)
            cursor.execute("SELECT * FROM schema_remdomain_xml_nestedrepeats")
            row = cursor.fetchone()
            self.assertEquals(row,None)
            cursor.execute("SELECT * FROM schema_remdomain_xml_nestedrepeats_root_nested")
            row = cursor.fetchone()
            self.assertEquals(row,None)
Пример #7
0
 def testSaveFormData_10(self):
     """ Test nested repeated form definition created and data saved """
     formdefmodel = create_xsd_and_populate("6_nestedrepeats.xsd", "6_nestedrepeats.xml", self.domain)
     formdefmodel_2 = create_xsd_and_populate("data/9_nestedrepeats_2.xsd", "data/9_nestedrepeats_2.xml", self.domain)
     formdefmodel_3 = create_xsd_and_populate("data/10_other_v3.xsd", "data/10_other_v3.xml", self.domain)
     try:
         cursor = connection.cursor()
         cursor.execute("SELECT * FROM schema_versioneddomain_xml_nestedrepeats")
         row = cursor.fetchone()
         self.assertEquals(row[9],"foo")
         self.assertEquals(row[10],"bar")
         self.assertEquals(row[11],"yes")
         self.assertEquals(row[12],"no")
         cursor.execute("SELECT * FROM schema_versioneddomain_xml_nestedrepeats_root_nested")
         row = cursor.fetchall()
         self.assertEquals(row[0][1],"userid0")
         self.assertEquals(row[0][2],"deviceid0")
         if is_configured_realsql():
             self.assertEquals(row[0][3],datetime(2009,10,9,11,4,30) )
             self.assertEquals(row[0][4],datetime(2009,10,9,11,9,30) )
         else:
             self.assertEquals(row[0][3],"2009-10-9 11:04:30" )
             self.assertEquals(row[0][4],"2009-10-9 11:09:30" )
         self.assertEquals(row[0][5],1)
         self.assertEquals(row[1][1],"userid2")
         self.assertEquals(row[1][2],"deviceid2")
         if is_configured_realsql():
             self.assertEquals(row[1][3],datetime(2009,11,12,11,11,11) )
             self.assertEquals(row[1][4],datetime(2009,11,12,11,16,11) )
         else:
             self.assertEquals(row[1][3],"2009-11-12 11:11:11" )
             self.assertEquals(row[1][4],"2009-11-12 11:16:11" )
         self.assertEquals(row[1][5],1)
     finally:
         manager = XFormManager()
         manager.remove_schema(formdefmodel.id)
         manager.remove_schema(formdefmodel_2.id)
         manager.remove_schema(formdefmodel_3.id)
Пример #8
0
 def testRepostingPreservesData(self):
     """Testing reposting entire schemas."""
     form = create_xsd_and_populate("data/pf_followup.xsd", "data/pf_followup_1.xml", self.domain)
     original_id = form.id
     populate("data/pf_followup_2.xml", self.domain)
     
     # sanity checks to make sure things are behaving normally
     self.assertEqual(1, FormDefModel.objects.count())
     self.assertEqual(2, Metadata.objects.count())
     original_meta_ids = [meta.id for meta in Metadata.objects.all()]
     
     cursor = connection.cursor()
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(2, cursor.fetchone()[0])
     
     # repost - numbers should be the same, but the ids should all be different
     manager = XFormManager()
     new_form = manager.repost_schema(form)
     self.assertEqual(1, FormDefModel.objects.count())
     
     # compare basic form properties
     for field in FormDefModel._meta.fields:
         if field.name not in ("id", "xsd_file_location", "element"):
             self.assertEqual(getattr(form, field.name), getattr(new_form, field.name), 
                              "Field %s was not successfully migrated.  Previous value: %s, new value: %s" \
                              % (field.name, getattr(form, field.name), getattr(new_form, field.name))) 
             
     # check metadata
     self.assertEqual(2, Metadata.objects.count())
     self.assertNotEqual(original_id, new_form.id)
     for meta in Metadata.objects.all():
         self.assertFalse(meta.id in original_meta_ids)
     
     # check parsed data
     cursor = connection.cursor()
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(2, cursor.fetchone()[0])