示例#1
0
 def testSaveFormData_BasicFormAndElementDefModels(self):
     """ Test that the correct child/parent ids and tables are created """
     create_xsd_and_populate("5_singlerepeat.xsd", "5_singlerepeat.xml", self.domain)
     create_xsd_and_populate("6_nestedrepeats.xsd", "6_nestedrepeats.xml", self.domain)
     fd = FormDefModel.objects.get(form_name="schema_basicdomain_xml_singlerepeat")
     # test the children tables are generated with the correct parent
     edds = ElementDefModel.objects.filter(form=fd)
     self.assertEquals(len(edds),2)
     # test that the top elementdefmodel has itself as a parent
     top_edm = ElementDefModel.objects.get(id=fd.element.id)
     self.assertEquals(None, top_edm.parent)
     # test that table name is correct
     self.assertEquals(top_edm.table_name, "schema_basicdomain_xml_singlerepeat")
     # test for only one child table
     edds = top_edm.children.all()
     self.assertEquals(len(edds),1)
     # test that that child table's parent is 'top'
     self.assertEquals(edds[0].parent,top_edm)
     self.assertEquals(edds[0].xpath,"root/UserID")
     self.assertEquals(edds[0].table_name,"schema_basicdomain_xml_singlerepeat_root_userid")
     
     # do it all again for a second table (to make sure counts are right)
     fd = FormDefModel.objects.get(form_name="schema_basicdomain_xml_nestedrepeats")
     edds = ElementDefModel.objects.filter(form=fd)
     self.assertEquals(len(edds),2)
     top_edm = ElementDefModel.objects.get(id=fd.element.id)
     self.assertEquals(None, top_edm.parent)
     self.assertEquals(top_edm.table_name, "schema_basicdomain_xml_nestedrepeats")
     edds = top_edm.children.all()
     self.assertEquals(len(edds),1)
     self.assertEquals(edds[0].parent,top_edm)
     self.assertEquals(edds[0].xpath,"root/nested")
     self.assertEquals(edds[0].table_name,"schema_basicdomain_xml_nestedrepeats_root_nested")
示例#2
0
 def testCrossDomainFormLookups(self):
     """Testing posting forms to the same xmlns in different domains."""
     form = create_xsd_and_populate("data/pf_followup.xsd", "data/pf_followup_1.xml", self.domain)
     cursor = connection.cursor()
     
     # we created one, make sure that's the case
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(1, cursor.fetchone()[0])
     
     # create another domain and post to it, make sure it doesnt' 
     # register
     other_domain = Domain.objects.create(name="otherdomain")
     form = populate("data/pf_followup_2.xml", other_domain)
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(1, cursor.fetchone()[0])
     
     # register on the second domain.  should be 1 and 1 now.
     form = create_xsd_and_populate("data/pf_followup.xsd", "data/pf_followup_3.xml", other_domain)
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(1, cursor.fetchone()[0])
     cursor.execute("SELECT count(*) FROM schema_otherdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(1, cursor.fetchone()[0])
     
     # post to individual domains, should behave as expected
     form = populate("data/pf_followup_4.xml", self.domain)
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(2, cursor.fetchone()[0])
     cursor.execute("SELECT count(*) FROM schema_otherdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(1, cursor.fetchone()[0])
     
     form = populate("data/pf_followup_5.xml", other_domain)
     cursor.execute("SELECT count(*) FROM schema_basicdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(2, cursor.fetchone()[0])
     cursor.execute("SELECT count(*) FROM schema_otherdomain_pathfinder_pathfinder_cc_follow_0_0_2a")
     self.assertEqual(2, cursor.fetchone()[0])
示例#3
0
文件: meta.py 项目: adewinter/data-hq
 def testMetaData_1(self):
     create_xsd_and_populate("data/brac_chw.xsd", "data/brac_chw_1.xml", self.domain)
     populate("data/brac_chw_1.xml", domain=self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM xformmanager_metadata where formname='BRAC CHW visiting CHP'" )
     row = cursor.fetchone()
     self.assertEquals(row[1],"BRAC CHW visiting CHP")
     self.assertEquals(row[2],"0.0.1")
     self.assertEquals(row[3],"P6PH9SR0TKCO6RVDL4YML1D2Y")
     if settings.DATABASE_ENGINE=='mysql' :
         self.assertEquals(row[4],datetime(2008,1,8,11,55,49))
         self.assertEquals(row[5],datetime(2008,1,8,12,8,39))
     else:
         self.assertEquals(row[4],datetime(2008,1,8,11,55,49,977))
         self.assertEquals(row[5],datetime(2008,1,8,12,8,39,258))
     self.assertEquals(row[6],"cary")
     self.assertEquals(row[7],"99")
     self.assertEquals(row[8],"Z6WRHCRXYQO1C1V6B2SB3RBG8")
     
     cursor.execute("SELECT * FROM schema_metadomain_brac_chw_chwvisit_v0_0_1")
     row = cursor.fetchone()
     self.assertEquals(row[0],1)
     # checks to make sure that non-standard meta fields remain in the generated data table
     self.assertEquals(row[3],"0.0.5") # this is commcareversion number
     self.assertEquals(row[10],"worker")
     self.assertEquals(row[11],3)
     """ use these when we finally remove meta info from generate data tables
示例#4
0
 def testSaveFormData_6(self):
     """ Test nested repeated form definition created and data saved """
     create_xsd_and_populate("6_nestedrepeats.xsd", "6_nestedrepeats.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_basicdomain_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_basicdomain_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)
示例#5
0
 def testIsSchemaRegistered(self):
     """ given a form and version is that form registered """
     create_xsd_and_populate("5_singlerepeat.xsd", domain=self.domain)
     create_xsd_and_populate("data/8_singlerepeat_2.xsd", domain=self.domain)
     self.assertTrue(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain))
     self.assertTrue(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain,2))
     self.assertFalse(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain,3))
     self.assertFalse(FormDefModel.is_schema_registered("nonexistent", self.domain,1))
示例#6
0
 def testSaveGeoFormDataFromXsd(self):
     """Test form definition with geopoint"""
     filename = replace_in_file(self.instance_filename, "REPLACE_ME", 
                                "%s %s %s %s" % (LAT, LON, ALT, ACC))
     create_xsd_and_populate("data/geopoint/geopoint_form.xsd",
                             filename,
                             self.domain)
     self._check_row()
示例#7
0
 def testSaveGeoDataNoNode(self):
     """Test form definition with geopoint - no submitted data"""
     filename = replace_in_file(self.instance_filename, 
                                "<GPSCOORDS_data>REPLACE_ME</GPSCOORDS_data>", 
                                "")
     create_xsd_and_populate("data/geopoint/geopoint_form.xhtml",
                             filename,
                             self.domain)
     self._check_row(None, None, None, None)
示例#8
0
文件: meta.py 项目: adewinter/data-hq
 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)
示例#9
0
 def testSaveFormData_3(self):
     """ Test deep form definition created and data saved """
     create_xsd_and_populate("3_deep.xsd", "3_deep.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_basicdomain_xml_deep")
     row = cursor.fetchone()
     self.assertEquals(row[9],"userid0")
     self.assertEquals(row[10],"abc")
     self.assertEquals(row[11],"xyz")
     self.assertEquals(row[12],222)
     self.assertEquals(row[13],"otherchild1")
示例#10
0
文件: meta.py 项目: adewinter/data-hq
 def testNoMetadata(self):
     logging.warn("EXPECTING A 'No metadata found' ERROR NOW:")
     create_xsd_and_populate("data/brac_chp.xsd", "data/brac_chp_nometa.xml", self.domain)
     # raises a Metadata.DoesNotExist error on fail
     Metadata.objects.get()
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_metadomain_test_no_meta")
     row = cursor.fetchone()
     self.assertEquals(row[0],1)
     self.assertEquals(int(row[10]),132) # this is commcareversion number
     self.assertEquals(row[11],"EDINA KEJO")
示例#11
0
 def testSaveFormData_4(self):
     """ Test very deep form definition created and data saved """
     create_xsd_and_populate("4_verydeep.xsd", "4_verydeep.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_basicdomain_xml_verydeep")
     row = cursor.fetchone()
     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)
示例#12
0
 def testSaveFormData_2(self):
     """ Test types created and data saved.
         Currently only supported in MYSQL.
     """ 
     cursor = connection.cursor()
     create_xsd_and_populate("2_types.xsd", "2_types.xml", self.domain)
     if is_configured_mysql():
         cursor.execute("DESCRIBE schema_basicdomain_xml_types")
         row = cursor.fetchall()
         self.assertEquals(row[9][1],"varchar(255)")
         self.assertEquals(row[10][1],"int(11)")
         self.assertEquals(row[11][1],"int(11)")
         self.assertEquals(row[12][1],"decimal(5,2)")
         self.assertEquals(row[13][1],"double")            
         self.assertEquals(row[14][1],"date")
         self.assertEquals(row[15][1],"time")
         self.assertEquals(row[16][1],"datetime")
         self.assertEquals(row[17][1],"tinyint(1)")
         self.assertEquals(row[18][1],"tinyint(1)")
     else:
         pass
     cursor.execute("SELECT * FROM schema_basicdomain_xml_types")
     row = cursor.fetchone()
     self.assertEquals(row[9],"userid0")
     self.assertEquals(row[10],111)
     self.assertEquals(row[11],222)
     if is_configured_realsql():
         self.assertEquals(row[12],Decimal("3.20"))
     else:
         self.assertEquals( str(float(row[8])), "3.2" )
     self.assertEquals(row[13],2002.09)
     if is_configured_realsql():
         self.assertEquals(row[14],date(2002,9,24) )
         self.assertEquals(row[15],time(12,24,48))
         self.assertEquals(row[16],datetime(2007,12,31,23,59,59) )
     else:
         self.assertEquals(row[14],"2002-09-24" )
         self.assertEquals(row[15],"12:24:48")
         self.assertEquals(row[16],"2007-12-31 23:59:59" )
     self.assertEquals(row[17],None )
     self.assertEquals(row[18],None )
     self.assertEquals(row[19],1 )
     self.assertEquals(row[20],None )
     
     self.assertEquals(row[21],1 )
     self.assertEquals(row[22],None )
     self.assertEquals(row[23],1 )
     self.assertEquals(row[24],1 )
     
     self.assertEquals(row[25],None )
     self.assertEquals(row[26],None )
     self.assertEquals(row[27],None )
     self.assertEquals(row[28],None )
示例#13
0
 def test4DeleteSubmissionMetadata(self):
     """ This is more a sanity check than anything else. Makes sure
     Django deletes the entire dependency chain for Submission objects. """
     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)
     instance_5.delete()
     instance_6.delete()
     # receiver unit tests already check for count([Submission|Attachment]) = 0
     # so here we test for metadata deletion
     count = Metadata.objects.all().count()
     self.assertEquals(0,count)
示例#14
0
 def testGetFormDef(self):
     """ Test get_formdef """
     create_xsd_and_populate("5_singlerepeat.xsd", domain=self.domain)
     create_xsd_and_populate("data/8_singlerepeat_2.xsd", domain=self.domain)
     formdef = FormDefModel.get_formdef("xml_singlerepeat", self.domain)
     self.assertTrue(formdef.version is None)
     self.assertTrue(formdef.uiversion is None)
     self.assertEqual(len(formdef.root.child_elements), 5)
     formdef2 = FormDefModel.get_formdef("xml_singlerepeat", self.domain, "2")
     self.assertTrue(formdef2.version == 2)
     self.assertTrue(formdef2.uiversion == 3)
     self.assertEqual(len(formdef2.root.child_elements), 5)
     nonexistant = FormDefModel.get_formdef("nonexistent", self.domain, "1")
     self.assertTrue(nonexistant is None)
示例#15
0
文件: meta.py 项目: adewinter/data-hq
 def testDuplicates(self):
     create_xsd_and_populate("data/pf_followup.xsd", domain=self.domain)
     running_count = 0
     self.assertEqual(running_count, len(Metadata.objects.all()))
     
     for i in range(1, 6):
         populate("data/pf_followup_%s.xml" % i, domain=self.domain)
         # the first one should update the count.  The rest should not
         running_count = running_count + 1
         self.assertEqual(running_count, len(Metadata.objects.all()))
         for j in range(0, 3):
             logging.warn("EXPECTING A 'duplicate submission' ERROR NOW:")
             populate("data/pf_followup_%s.xml" % i, domain=self.domain)
             self.assertEqual(running_count, len(Metadata.objects.all()))
示例#16
0
文件: meta.py 项目: adewinter/data-hq
 def testMetaData_3(self):
     create_xsd_and_populate("data/pf_followup.xsd", "data/pf_followup_1.xml", self.domain)
     populate("data/pf_followup_2.xml", domain=self.domain)
     create_xsd_and_populate("data/pf_new_reg.xsd", "data/pf_new_reg_1.xml", self.domain)
     populate("data/pf_new_reg_2.xml", domain=self.domain)
     create_xsd_and_populate("data/pf_ref_completed.xsd", "data/pf_ref_completed_1.xml", self.domain)
     populate("data/pf_ref_completed_2.xml", domain=self.domain)
     create_xsd_and_populate("data/mvp_mother_reg.xsd", "data/mvp_mother_reg_1.xml", self.domain)
     populate("data/mvp_mother_reg_2.xml", domain=self.domain)
     populate("data/mvp_mother_reg_3.xml", domain=self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM xformmanager_metadata order by id")
     row = cursor.fetchall()
     
     latest_attachment_id = ( Attachment.objects.latest('id') ).id
     latest_formdefmodel_id = ( FormDefModel.objects.latest('id') ).id
     
     self.assertEquals(row[0][1],"PathfinderFollowUpVisit")
     self.assertEquals(row[0][9],latest_attachment_id-8)
     self.assertEquals(row[0][10],1)
     self.assertEquals(row[0][11],latest_formdefmodel_id-3)
     self.assertEquals(row[1][1],"PathfinderFollowUpVisit")
     self.assertEquals(row[2][1],"PathfinderRegistratonVisit")
     self.assertEquals(row[3][1],"PathfinderRegistratonVisit")
     self.assertEquals(row[3][9],latest_attachment_id-5)
     self.assertEquals(row[3][10],2)
     self.assertEquals(row[3][11],latest_formdefmodel_id-2)
     self.assertEquals(row[4][1],"PathfinderReferralVisit")
     self.assertEquals(row[5][1],"PathfinderReferralVisit")
     self.assertEquals(row[6][1],"XOLIJZVDJKLORBQUABFLVGLEA")
     self.assertEquals(row[7][1],"XOLIJZVDJKLORBQUABFLVGLEA")
     self.assertEquals(row[8][1],"XOLIJZVDJKLORBQUABFLVGLEA")
     self.assertEquals(row[8][9],latest_attachment_id)
     self.assertEquals(row[8][10],3)
     self.assertEquals(row[8][11],latest_formdefmodel_id)
示例#17
0
文件: meta.py 项目: adewinter/data-hq
 def testSubmissionCount(self):
     create_xsd_and_populate("data/pf_followup.xsd", domain=self.domain)
     today = datetime.now().date()
     tomorrow = today + timedelta(days=1)
     day_after_tomorrow = today + timedelta(days=2)
     yesterday = today - timedelta(days=1)
     for i in range(1, 6):
         submission = populate("data/pf_followup_%s.xml" % i, domain=self.domain)
         meta = Metadata.objects.get(attachment=submission.xform)
         self.assertEqual(i, meta.get_submission_count(today, tomorrow, False))
         self.assertEqual(1, meta.get_submission_count(today, tomorrow, True))
         self.assertEqual(0, meta.get_submission_count(yesterday, today, False))
         self.assertEqual(0, meta.get_submission_count(tomorrow, day_after_tomorrow, False))
         self.assertEqual(i, meta.get_submission_count(yesterday, day_after_tomorrow, False))
         self.assertEqual(1, meta.get_submission_count(yesterday, day_after_tomorrow, True))
示例#18
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)
示例#19
0
 def test3RemoveSchema(self):
     """ Test removing a more complicated schema """
     schema_remdomain_model = create_xsd_and_populate("6_nestedrepeats.xsd", "6_nestedrepeats.xml", self.domain)
     num_handled = SubmissionHandlingOccurrence.objects.all().count()
     self.assertEquals(1,num_handled)
     all_meta = Metadata.objects.all()
     count = all_meta.count()
     self.assertEquals(1,count)
     attachment = all_meta[0].attachment
     su = StorageUtility()
     su.remove_schema(schema_remdomain_model.id)
     # Test that children have become orphans
     num_handled = SubmissionHandlingOccurrence.objects.all().count()
     self.assertEquals(0,num_handled)
     count = Metadata.objects.all().count()
     self.assertEquals(0,count)
     self.assertTrue(attachment.submission.is_orphaned())
     # TODO fix the db call to be more standard here
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM xformmanager_formdefmodel")
     row = cursor.fetchone()
     self.assertEquals(row,None)
     cursor.execute("SELECT * FROM xformmanager_elementdefmodel")
     row = cursor.fetchone()
     self.assertEquals(row,None)
     if settings.DATABASE_ENGINE == 'mysql':
         cursor.execute("show tables like 'schema_remdomain_xml_nestedrepeats%'")
         row = cursor.fetchone()
         self.assertEquals(row,None)
示例#20
0
文件: meta.py 项目: adewinter/data-hq
 def testMetaData_2(self):
     create_xsd_and_populate("data/brac_chp.xsd", "data/brac_chp_1.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM xformmanager_metadata where formname='BRACCHPHomeVisit'" )
     row = cursor.fetchone()
     self.assertEquals(row[1],"BRACCHPHomeVisit")
     self.assertEquals(row[2],"0.0.1")
     self.assertEquals(row[3],"WK13O6ST8SWZVXLAI68B9YZWK")
     if settings.DATABASE_ENGINE=='mysql' :
         self.assertEquals(row[4],datetime(2009,4,30,11,17,25))
         self.assertEquals(row[5],datetime(2009,4,30,11,21,29))
     else:
         self.assertEquals(row[4],datetime(2009,4,30,11,17,25,89))
         self.assertEquals(row[5],datetime(2009,4,30,11,21,29,512))
     self.assertEquals(row[6],"lucy")
     self.assertEquals(row[7],"6")
     self.assertEquals(row[8],"RW07SHOPTWGAOJKUQJJJN215D")
示例#21
0
 def testSaveFormData_5(self):
     """ Test repeated form definition created and data saved """
     create_xsd_and_populate("5_singlerepeat.xsd", "5_singlerepeat.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_basicdomain_xml_singlerepeat")
     row = cursor.fetchone()
     self.assertEquals(row[9],"deviceid0")
     self.assertEquals(row[10],"starttime")
     self.assertEquals(row[11],"endtime")
     cursor.execute("SELECT * FROM schema_basicdomain_xml_singlerepeat_root_userid")
     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)
示例#22
0
 def testSaveGeoDataMissingFields(self):
     """Test form definition with geopoint - EXTRA FIELDS"""
     filename = replace_in_file(self.instance_filename, "REPLACE_ME", 
                                "%s" % (LAT))
     create_xsd_and_populate("data/geopoint/geopoint_form.xhtml",
                             filename,
                             self.domain)
     self._check_row(LAT, None, None, None)
     
     filename = replace_in_file(self.instance_filename, "REPLACE_ME", 
                                "%s %s" % (LAT, LON))
     populate(filename, self.domain)
     self._check_row(LAT, LON, None, None)
     
     filename = replace_in_file(self.instance_filename, "REPLACE_ME", 
                                "%s %s %s" % (LAT, LON, ALT))
     populate(filename, self.domain)
     self._check_row(LAT, LON, ALT, None)
示例#23
0
 def testDuplicateTag(self):
     form = create_xsd_and_populate("data/duplicate_tag.xsd", "data/duplicate_tag.xml", self.domain)
     self.assertEqual(self.domain, form.domain)
     self.assertTrue(self.domain.name in form.table_name)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM %s" % form.form_name)
     row = cursor.fetchone()
     self.assertEquals(row[len(row) - 2],"y")
     
示例#24
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)
示例#25
0
 def testSaveFormData_9(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/9_nestedrepeats_3.xsd", "data/9_nestedrepeats_3.xml", self.domain)
     formdefmodel_4 = create_xsd_and_populate("data/9_nestedrepeats_4.xsd", "data/9_nestedrepeats_4.xml", self.domain)
     try:
         # add checks for metadata.uiversion, version
         for i in (2,3,4):
             cursor = connection.cursor()
             cursor.execute("SELECT * FROM schema_versioneddomain_xml_nestedrepeats_%s" % i)
             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_%s" % i)
             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)
         manager.remove_schema(formdefmodel_4.id)
示例#26
0
 def testRepeatMultiples(self):
     """ Test multiple repeated form definition created and data saved """
     create_xsd_and_populate("data/repeat_multiple.xsd", "data/repeat_multiple_1.xml", self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_repeatdomain_xml_singlerepeat")
     rows = cursor.fetchall()
     self.assertEqual(1, len(rows))
     row = rows[0]
     row_id = row[0]
     self.assertEquals(1, row_id)
     self.assertEquals(row[9], "starttime")
     self.assertEquals(row[10], "endtime")
     cursor.execute("SELECT * FROM schema_repeatdomain_xml_singlerepeat_root_userid")
     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], row_id)
     self.assertEquals(row[1][2], row_id)
     self.assertEquals(row[2][2], row_id)
     cursor.execute("SELECT * FROM schema_repeatdomain_xml_singlerepeat_root_my_device")
     row = cursor.fetchall()
     self.assertEquals(row[0][1], "deviceid0")
     self.assertEquals(row[1][1], "deviceid1")
     self.assertEquals(row[2][1], "deviceid2")
     self.assertEquals(row[0][2], row_id)
     self.assertEquals(row[1][2], row_id)
     self.assertEquals(row[2][2], row_id)
     # test a second repeat to make sure child ids link correctly
     populate("data/repeat_multiple_2.xml", self.domain)
     cursor.execute("SELECT distinct parent_id FROM schema_repeatdomain_xml_singlerepeat_root_my_device")
     rows = cursor.fetchall()
     self.assertEqual(2, len(rows))
     ids = [row[0] for row in rows]
     self.assertTrue(1 in ids)
     self.assertTrue(2 in ids)
     cursor.execute("SELECT * FROM schema_repeatdomain_xml_singlerepeat_root_my_device where parent_id=2")
     rows = cursor.fetchall()
     self.assertEqual(3, len(rows))
     for row in rows:
         self.assertTrue(row[1].startswith("second"))
示例#27
0
 def testSaveExtraValues(self):
     """Test form definition with geopoint"""
     filename = replace_in_file(self.instance_filename, "REPLACE_ME", 
                                "%s %s %s %s %s" % (LAT, LON, ALT, ACC, "0.211"))
     
     # unfortunately this doesn't fail hard, so we just check for the 
     # lack of a row to confirm that it didn't succeed
     form = create_xsd_and_populate("data/geopoint/geopoint_form.xhtml",
                             filename,
                             self.domain)
     cursor = connection.cursor()
     cursor.execute("SELECT count(*) FROM schema_geodomain_moz_sarahdemo_2")
     self.assertEqual(0, cursor.fetchone()[0] )
示例#28
0
 def testSaveFormData_1(self):
     """ Test basic form definition created and data saved """
     form = create_xsd_and_populate("1_basic.xsd", "1_basic.xml", self.domain)
     self.assertEqual(self.domain, form.domain)
     self.assertTrue(self.domain.name in form.table_name)
     cursor = connection.cursor()
     cursor.execute("SELECT * FROM schema_basicdomain_xml_basic")
     row = cursor.fetchone()
     self.assertEquals(row[0],1)
     self.assertEquals(row[9],"userid0")
     self.assertEquals(row[10],"deviceid0")
     self.assertEquals(row[11],"starttime")
     self.assertEquals(row[12],"endtime")
示例#29
0
文件: meta.py 项目: adewinter/data-hq
 def testSubmitHandling(self):
     create_xsd_and_populate("data/pf_followup.xsd", domain=self.domain)
     self.assertEqual(0, len(Metadata.objects.all()))
     self.assertEqual(0, len(Submission.objects.all()))
     self.assertEqual(0, len(SubmissionHandlingOccurrence.objects.all()))
     
     # this should create a linked submission
     populate("data/pf_followup_1.xml", domain=self.domain)
     
     self.assertEqual(1, len(Metadata.objects.all()))
     self.assertEqual(1, len(Submission.objects.all()))
     submission = Submission.objects.all()[0]
     self.assertEqual(1, len(SubmissionHandlingOccurrence.objects.all()))
     way_handled = SubmissionHandlingOccurrence.objects.all()[0]
     self.assertEqual(submission, way_handled.submission)
     # add check for a count from this user, equal to one
     self.assertEqual("1", way_handled.message)
     self.assertEqual("xformmanager", way_handled.handled.app)
     self.assertEqual("instance_data", way_handled.handled.method)
     self.assertFalse(submission.is_orphaned())
     
     # these should NOT create a linked submission.  No schema
     logging.warn("\nEXPECTING AN ERROR NOW:")
     populate("data/pf_new_reg_1.xml", domain=self.domain)
     logging.warn("EXPECTING AN ERROR NOW:")
     populate("data/pf_new_reg_2.xml", domain=self.domain)
     logging.warn("EXPECTING AN ERROR NOW:")
     populate("data/pf_ref_completed_1.xml", domain=self.domain)
     
     self.assertEqual(1, len(Metadata.objects.all()))
     self.assertEqual(4, len(Submission.objects.all()))
     for new_submission in Submission.objects.all():
         if new_submission == submission:
             self.assertFalse(new_submission.is_orphaned())
         else:
             self.assertTrue(new_submission.is_orphaned())
     self.assertEqual(1, len(SubmissionHandlingOccurrence.objects.all()))
     self.assertEqual(way_handled, SubmissionHandlingOccurrence.objects.all()[0])
示例#30
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)