Example #1
0
 def test_advanced_suite_auto_select_with_filter(self):
     """
     Form filtering should be done using the last 'non-autoload' case being loaded.
     """
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(0).actions.load_update_cases.append(
         LoadUpdateAction(case_tag='autoload',
                          auto_select=AutoSelectCase(mode=AUTO_SELECT_USER,
                                                     value_key='case_id')))
     form = app.get_module(1).get_form(0)
     form.form_filter = "./edd = '123'"
     suite = app.create_suite()
     self.assertXmlPartialEqual(
         self.get_xml('suite-advanced-autoselect-with-filter'), suite,
         './entry[2]')
     menu = """
     <partial>
       <menu id="m1">
         <text>
           <locale id="modules.m1"/>
         </text>
         <command id="m1-f0" relevant="instance('casedb')/casedb/case[@case_id=instance('commcaresession')/session/data/case_id_case_clinic]/edd = '123'"/>
         <command id="m1-f1"/>
         <command id="m1-f2"/>
         <command id="m1-case-list"/>
       </menu>
     </partial>
     """
     self.assertXmlPartialEqual(menu, suite, "./menu[@id='m1']")
Example #2
0
 def test_advanced_suite_auto_select_raw(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(
         0).actions.load_update_cases[0].auto_select = AutoSelectCase(
             mode=AUTO_SELECT_RAW, value_key='some xpath expression')
     self.assertXmlEqual(self.get_xml('suite-advanced-autoselect-raw'),
                         app.create_suite())
 def test_advanced_suite_auto_select_usercase(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(0).actions.load_update_cases[0].auto_select = AutoSelectCase(
         mode=AUTO_SELECT_USERCASE
     )
     self.assertXmlPartialEqual(self.get_xml('suite-advanced-autoselect-usercase'), app.create_suite(),
                                './entry[2]')
Example #4
0
 def test_advanced_suite_auto_select_user(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(
         0).actions.load_update_cases[0].auto_select = AutoSelectCase(
             mode=AUTO_SELECT_USER, value_key='case_id')
     self.assertXmlEqual(self.get_xml('suite-advanced-autoselect-user'),
                         app.create_suite())
 def test_advanced_suite_auto_select_fixture(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(0).actions.load_update_cases[0].auto_select = AutoSelectCase(
         mode=AUTO_SELECT_FIXTURE,
         value_source='table_tag',
         value_key='field_name'
     )
     self.assertXmlPartialEqual(self.get_xml('suite-advanced-autoselect-fixture'), app.create_suite(),
                                './entry[2]')
Example #6
0
 def advanced_form_autoloads(form, mode, value_key, value_source=None):
     """See corehq.apps.app_manager.models.AutoSelectCase
     """
     assert isinstance(form, AdvancedForm)
     form.actions.load_update_cases.append(
         LoadUpdateAction(case_tag='auto_select_{}'.format(mode),
                          auto_select=AutoSelectCase(
                              mode=mode,
                              value_source=value_source,
                              value_key=value_key)))
 def test_advanced_suite_auto_select_raw(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(0).actions.load_update_cases[0].auto_select = AutoSelectCase(
         mode=AUTO_SELECT_RAW,
         value_key=("some xpath expression "
                    "containing instance('casedb') "
                    "and instance('commcaresession')")
     )
     self.assertXmlPartialEqual(self.get_xml('suite-advanced-autoselect-raw'), app.create_suite(),
                                './entry[2]')
Example #8
0
 def test_advanced_suite_auto_select_case(self):
     app = Application.wrap(self.get_json('suite-advanced'))
     load_update_cases = app.get_module(1).get_form(
         0).actions.load_update_cases
     load_update_cases.append(
         LoadUpdateAction(case_tag='auto_selected',
                          auto_select=AutoSelectCase(
                              mode=AUTO_SELECT_CASE,
                              value_source=load_update_cases[0].case_tag,
                              value_key='case_id_index')))
     self.assertXmlEqual(self.get_xml('suite-advanced-autoselect-case'),
                         app.create_suite())
Example #9
0
 def test_advanced_suite_auto_select_with_filter(self):
     """
     Form filtering should be done using the last 'non-autoload' case being loaded.
     """
     app = Application.wrap(self.get_json('suite-advanced'))
     app.get_module(1).get_form(0).actions.load_update_cases.append(
         LoadUpdateAction(case_tag='autoload',
                          auto_select=AutoSelectCase(mode=AUTO_SELECT_USER,
                                                     value_key='case_id')))
     form = app.get_module(1).get_form(0)
     form.form_filter = "./edd = '123'"
     self.assertXmlEqual(
         self.get_xml('suite-advanced-autoselect-with-filter'),
         app.create_suite())
Example #10
0
    def test_registration_form_autoload_subcase(self):
        self.form.actions.load_update_cases = [
            LoadUpdateAction(case_type="parent", case_tag="parent"),
            LoadUpdateAction(auto_select=AutoSelectCase(
                mode=AUTO_SELECT_USERCASE, value_key=""), )
        ]

        self.form.actions.open_cases = [
            AdvancedOpenCaseAction(case_tag="child",
                                   case_type="child",
                                   name_path="/data/question1",
                                   case_indices=[CaseIndex(tag="parent")])
        ]

        self.assertTrue(self.form.is_registration_form())
Example #11
0
    def test_registration_form_autoload(self):
        self.form.actions.load_update_cases = [
            LoadUpdateAction(auto_select=AutoSelectCase(
                mode=AUTO_SELECT_USERCASE, value_key=""), )
        ]

        self.form.actions.open_cases = [
            AdvancedOpenCaseAction(
                case_tag="child",
                case_type="child",
                name_update=ConditionalCaseUpdate(
                    question_path="/data/question1"),
            )
        ]

        self.assertTrue(self.form.is_registration_form())
Example #12
0
    def test_case_list_registration_form_advanced_autoload(self):
        factory = AppFactory(build_version='2.9.0')

        register_module, register_form = factory.new_advanced_module(
            'register_dugong', 'dugong')
        factory.form_opens_case(register_form)
        register_form.actions.load_update_cases.append(
            LoadUpdateAction(case_tag='usercase',
                             auto_select=AutoSelectCase(
                                 mode=AUTO_SELECT_USERCASE, )))

        case_module, update_form = factory.new_advanced_module(
            'update_dugong', 'dugong')
        factory.form_requires_case(update_form)

        case_module.case_list_form.form_id = register_form.get_unique_id()
        case_module.case_list_form.label = {'en': 'Register another Dugong'}
        self.assertXmlEqual(self.get_xml('case-list-form-advanced-autoload'),
                            factory.app.create_suite())