def test_save_case_delete_attachment(self): case = _create_case() case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='doc', content_type='text/xml' )) CaseAccessorSQL.save_case(case) [attachment] = CaseAccessorSQL.get_attachments(case.case_id) case.track_delete(attachment) CaseAccessorSQL.save_case(case) self.assertEqual([], CaseAccessorSQL.get_attachments(case.case_id))
def test_get_attachments(self): case = _create_case() case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='pic.jpg', content_type='image/jpeg', blob_id='125', identifier='pic1', md5='123', )) case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='doc', content_type='text/xml', blob_id='126', identifier='doc1', md5='123', )) CaseAccessorSQL.save_case(case) with self.assertNumQueries(1, using=db_for_read_write(CaseAttachmentSQL)): attachments = CaseAccessorSQL.get_attachments(case.case_id) self.assertEqual(2, len(attachments)) sorted_attachments = sorted(attachments, key=lambda x: x.name) for att in attachments: self.assertEqual(case.case_id, att.case_id) self.assertEqual('doc', sorted_attachments[0].name) self.assertEqual('pic.jpg', sorted_attachments[1].name)
def test_hard_delete_case(self): case1 = _create_case() case2 = _create_case(domain='other_domain') self.addCleanup(lambda: CaseAccessorSQL.hard_delete_cases('other_domain', [case2.case_id])) case1.track_create(CommCareCaseIndexSQL( case=case1, identifier='parent', referenced_type='mother', referenced_id=uuid.uuid4().hex, relationship_id=CommCareCaseIndexSQL.CHILD )) case1.track_create(CaseAttachmentSQL( case=case1, attachment_id=uuid.uuid4().hex, name='pic.jpg', content_type='image/jpeg', blob_id='122', md5='123', identifier='pic.jpg', )) CaseAccessorSQL.save_case(case1) num_deleted = CaseAccessorSQL.hard_delete_cases(DOMAIN, [case1.case_id, case2.case_id]) self.assertEqual(1, num_deleted) with self.assertRaises(CaseNotFound): CaseAccessorSQL.get_case(case1.case_id) self.assertEqual([], CaseAccessorSQL.get_indices(case1.domain, case1.case_id)) self.assertEqual([], CaseAccessorSQL.get_attachments(case1.case_id)) self.assertEqual([], CaseAccessorSQL.get_transactions(case1.case_id))
def test_get_attachments(self): case = _create_case() case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='pic.jpg', content_type='image/jpeg' )) case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='doc', content_type='text/xml' )) CaseAccessorSQL.save_case(case) with self.assertRaises(AttachmentNotFound): CaseAccessorSQL.get_attachment_by_name(case.case_id, 'missing') with self.assertNumQueries(1, using=db_for_read_write(CaseAttachmentSQL)): attachments = CaseAccessorSQL.get_attachments(case.case_id) self.assertEqual(2, len(attachments)) sorted_attachments = sorted(attachments, key=lambda x: x.name) for att in attachments: self.assertEqual(case.case_id, att.case_id) self.assertEqual('doc', sorted_attachments[0].name) self.assertEqual('pic.jpg', sorted_attachments[1].name)
def test_save_case_update_attachment(self): case = _create_case() case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='doc', content_type='text/xml' )) CaseAccessorSQL.save_case(case) [attachment] = CaseAccessorSQL.get_attachments(case.case_id) attachment.name = 'new_name' # hack to call the sql function with an already saved attachment case.track_create(attachment) with self.assertRaises(CaseSaveError): CaseAccessorSQL.save_case(case)
case=case1, attachment_id=uuid.uuid4().hex, name='pic.jpg', content_type='image/jpeg', blob_id='122', md5='123', )) CaseAccessorSQL.save_case(case1) num_deleted = CaseAccessorSQL.hard_delete_cases(DOMAIN, [case1.case_id, case2.case_id]) self.assertEqual(1, num_deleted) with self.assertRaises(CaseNotFound): CaseAccessorSQL.get_case(case1.case_id) self.assertEqual([], CaseAccessorSQL.get_indices(case1.domain, case1.case_id)) self.assertEqual([], CaseAccessorSQL.get_attachments(case1.case_id)) self.assertEqual([], CaseAccessorSQL.get_transactions(case1.case_id)) def test_get_attachment_by_name(self): case = _create_case() case.track_create(CaseAttachmentSQL( case=case, attachment_id=uuid.uuid4().hex, name='pic.jpg', content_type='image/jpeg', blob_id='123', md5='123' )) case.track_create(CaseAttachmentSQL( case=case,
def _get_attachments_from_db(self): from corehq.form_processor.backends.sql.dbaccessors import CaseAccessorSQL return CaseAccessorSQL.get_attachments(self.case_id)
def _get_attachments_from_db(self): from corehq.form_processor.backends.sql.dbaccessors import CaseAccessorSQL return CaseAccessorSQL.get_attachments(self.case_id)