def test_get_forms_by_type(self): form1 = create_form_for_test(DOMAIN) form2 = create_form_for_test(DOMAIN) # basic check forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 5) self.assertEqual(2, len(forms)) self.assertEqual({form1.form_id, form2.form_id}, {f.form_id for f in forms}) # check reverse ordering forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 5, recent_first=True) self.assertEqual(2, len(forms)) self.assertEqual([form2.form_id, form1.form_id], [f.form_id for f in forms]) # check limit forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 1) self.assertEqual(1, len(forms)) self.assertEqual(form1.form_id, forms[0].form_id) # change state of form1 FormAccessorSQL.archive_form(form1, 'user1') # check filtering by state forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormArchived', 2) self.assertEqual(1, len(forms)) self.assertEqual(form1.form_id, forms[0].form_id) forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 2) self.assertEqual(1, len(forms)) self.assertEqual(form2.form_id, forms[0].form_id)
def test_get_forms_by_type(self): form1 = create_form_for_test(DOMAIN) form2 = create_form_for_test(DOMAIN) # basic check forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 5) self.assertEqual(2, len(forms)) self.assertEqual({form1.form_id, form2.form_id}, {f.form_id for f in forms}) # check reverse ordering forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 5, recent_first=True) self.assertEqual(2, len(forms)) self.assertEqual([form2.form_id, form1.form_id], [f.form_id for f in forms]) # check limit forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 1) self.assertEqual(1, len(forms)) self.assertEqual(form1.form_id, forms[0].form_id) # change state of form1 FormAccessorSQL.archive_form(form1, 'user1') # check filtering by state forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormArchived', 2) self.assertEqual(1, len(forms)) self.assertEqual(form1.form_id, forms[0].form_id) forms = FormAccessorSQL.get_forms_by_type(DOMAIN, 'XFormInstance', 2) self.assertEqual(1, len(forms)) self.assertEqual(form2.form_id, forms[0].form_id)
def test_reprocess_unfinished_submission_case_create(self): case_id = uuid.uuid4().hex transaction_patch = patch( 'corehq.form_processor.backends.sql.processor.transaction') case_save_patch = patch( 'corehq.form_processor.backends.sql.dbaccessors.CaseAccessorSQL.save_case', side_effect=InternalError) with transaction_patch, case_save_patch, self.assertRaises( InternalError): self.factory.create_or_update_cases([ CaseStructure(case_id=case_id, attrs={ 'case_type': 'parent', 'create': True }) ]) stubs = UnfinishedSubmissionStub.objects.filter(domain=self.domain, saved=False).all() self.assertEqual(1, len(stubs)) # form that was saved before case error raised normal_form_ids = FormAccessorSQL.get_form_ids_in_domain_by_state( self.domain, XFormInstanceSQL.NORMAL) self.assertEqual(1, len(normal_form_ids)) self.assertEqual(stubs[0].xform_id, normal_form_ids[0]) # shows error form (duplicate of form that was saved before case error) # this is saved becuase the saving was assumed to be atomic so if there was any error it's assumed # the form didn't get saved # we don't really care about this form in this test error_forms = FormAccessorSQL.get_forms_by_type( self.domain, 'XFormError', 10) self.assertEqual(1, len(error_forms)) self.assertEqual(error_forms[0].orig_id, normal_form_ids[0]) self.assertEqual( 0, len(CaseAccessorSQL.get_case_ids_in_domain(self.domain))) result = reprocess_unfinished_stub(stubs[0]) self.assertEqual(1, len(result.cases)) self.assertEqual(0, len(result.ledgers)) case_ids = CaseAccessorSQL.get_case_ids_in_domain(self.domain) self.assertEqual(1, len(case_ids)) self.assertEqual(case_id, case_ids[0]) with self.assertRaises(UnfinishedSubmissionStub.DoesNotExist): UnfinishedSubmissionStub.objects.get(pk=stubs[0].pk)