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]')
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]')
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_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())
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())
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())
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())
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())