コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
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',
            )
コード例 #4
0
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',
            )