def setUp(self): self.is_usercase_in_use_patch = patch( 'corehq.apps.app_manager.models.is_usercase_in_use') self.is_usercase_in_use_mock = self.is_usercase_in_use_patch.start() self.is_usercase_in_use_mock.return_value = True self.app = Application.new_app('domain', 'New App') self.module = self.app.add_module( AdvancedModule.new_module('Fish Module', None)) self.module.case_type = 'fish' self.form = self.module.new_form('New Form', None) self.case_index = CaseIndex( reference_id='host', relationship='extension', ) self.subcase = AdvancedOpenCaseAction( case_type='freshwater', case_name='Wanda', open_condition=FormActionCondition(type='always'), case_properties={'name': '/data/question1'}, case_indices=[self.case_index], ) self.form.actions.open_cases.append(self.subcase) self.xform = XForm(self.get_xml('original')) path = 'subcase_0/' self.subcase_block = CaseBlock(self.xform, path)
def setUp(self): self.is_usercase_in_use_patch = patch('corehq.apps.app_manager.models.is_usercase_in_use') self.is_usercase_in_use_mock = self.is_usercase_in_use_patch.start() self.is_usercase_in_use_mock.return_value = True self.app = Application.new_app('domain', 'New App') self.module = self.app.add_module(AdvancedModule.new_module('Fish Module', None)) self.module.case_type = 'fish' self.form = self.module.new_form('New Form', None) self.case_index = CaseIndex( reference_id='host', relationship='extension', ) self.subcase = AdvancedOpenCaseAction( case_type='freshwater', case_name='Wanda', open_condition=FormActionCondition(type='always'), case_properties={'name': '/data/question1'}, case_indices=[self.case_index], ) self.form.actions.open_cases.append(self.subcase) self.xform = XForm(self.get_xml('original')) path = 'subcase_0/' self.subcase_block = CaseBlock(self.xform, path)
class CaseBlockIndexRelationshipTest(SimpleTestCase, TestXmlMixin): file_path = 'data', 'extension_case' def setUp(self): self.is_usercase_in_use_patch = patch('corehq.apps.app_manager.models.is_usercase_in_use') self.is_usercase_in_use_mock = self.is_usercase_in_use_patch.start() self.is_usercase_in_use_mock.return_value = True self.app = Application.new_app('domain', 'New App') self.module = self.app.add_module(AdvancedModule.new_module('Fish Module', None)) self.module.case_type = 'fish' self.form = self.module.new_form('New Form', None) self.case_index = CaseIndex( reference_id='host', relationship='extension', ) self.subcase = AdvancedOpenCaseAction( case_type='freshwater', case_name='Wanda', open_condition=FormActionCondition(type='always'), case_properties={'name': '/data/question1'}, case_indices=[self.case_index], ) self.form.actions.open_cases.append(self.subcase) self.xform = XForm(self.get_xml('original')) path = 'subcase_0/' self.subcase_block = CaseBlock(self.xform, path) def add_subcase_block(self): parent_node = self.xform.data_node action = next(self.form.actions.get_open_actions()) case_id = session_var(action.case_session_var) subcase_node = _make_elem('{x}subcase_0') parent_node.append(subcase_node) subcase_node.insert(0, self.subcase_block.elem) self.subcase_block.add_create_block( relevance=self.xform.action_relevance(action.open_condition), case_name=self.subcase.case_name, case_type=self.subcase.case_type, delay_case_id=bool(self.subcase.repeat_context), autoset_owner_id=autoset_owner_id_for_advanced_action(action), has_case_sharing=self.form.get_app().case_sharing, case_id=case_id ) self.subcase_block.add_update_block(self.subcase.case_properties) def test_xform_case_block_index_supports_relationship(self): """ CaseBlock index should allow the relationship to be set """ self.add_subcase_block() self.subcase_block.add_index_ref( 'host', self.form.get_case_type(), self.xform.resolve_path("case/@case_id"), self.subcase.case_indices[0].relationship, ) self.assertXmlEqual(self.get_xml('open_subcase'), str(self.xform)) def test_xform_case_block_index_default_relationship(self): """ CaseBlock index relationship should default to "child" """ child = CaseIndex( reference_id='host', relationship='child', ) self.subcase.case_indices = [child] self.add_subcase_block() self.subcase_block.add_index_ref( 'host', self.form.get_case_type(), self.xform.resolve_path("case/@case_id"), ) self.assertXmlEqual(self.get_xml('open_subcase_child'), str(self.xform)) def test_xform_case_block_index_valid_relationship(self): """ CaseBlock index relationship should only allow valid values """ with self.assertRaisesRegexp(CaseError, 'Valid values for an index relationship are "child" and "extension"'): self.subcase_block.add_index_ref( 'host', self.form.get_case_type(), self.xform.resolve_path("case/@case_id"), 'cousin', )