def test_owner_id_maps_to_attribute(self): factory = AppFactory() # Create form1 which uses case type 'house' module1, form1 = factory.new_module(Module, 'open_case', 'house') # Form1 updates house.owner_id factory.form_requires_case(form1, case_type='house', update={'owner_id': 'new_owner'}) # Verify that the actual case property is '@owner_id', not 'owner_id' self.assertCaseProperties(factory.app, 'house', ['@owner_id'])
def test_basic_apps(self): for class_ in (Module, AdvancedModule): factory = AppFactory() m1, m1f1 = factory.new_module(class_, 'open_case', 'house') factory.form_opens_case(m1f1) m1f2 = factory.new_form(m1) factory.form_requires_case(m1f2, case_type='house', update={ 'foo': '/data/question1', 'bar': '/data/question2', }) self.assertCaseProperties(factory.app, 'house', ['foo', 'bar'])
class ModuleAsChildTestBase(TestXmlMixin): file_path = ('data', 'suite') child_module_class = None def setUp(self): self.factory = AppFactory(build_version='2.20.0', domain=DOMAIN) self.module_0, _ = self.factory.new_basic_module('parent', 'gold-fish') self.module_1, _ = self.factory.new_module(self.child_module_class, 'child', 'guppy', parent_module=self.module_0) self.app = self.factory.app def test_basic_workflow(self): # make module_1 as submenu to module_0 XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu root="m0" id="m1"> <text> <locale id="modules.m1"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") def test_workflow_with_put_in_root(self): # make module_1 as submenu to module_0 self.module_1.put_in_root = True XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") @patch('corehq.apps.app_manager.helpers.validators.domain_has_privilege', return_value=True) @patch('corehq.apps.app_manager.models.validate_xform', return_value=None) @patch('corehq.apps.builds.models.BuildSpec.supports_j2me', return_value=False) def test_deleted_parent(self, *args): self.module_1.root_module_id = "unknownmodule" cycle_error = { 'type': 'unknown root', } errors = self.app.validate_app() self.assertIn(cycle_error, errors) @patch('corehq.apps.app_manager.helpers.validators.domain_has_privilege', return_value=True) @patch('corehq.apps.app_manager.models.validate_xform', return_value=None) @patch('corehq.apps.builds.models.BuildSpec.supports_j2me', return_value=False) def test_circular_relation(self, *args): self.module_0.root_module_id = self.module_1.unique_id cycle_error = { 'type': 'root cycle', } errors = self.app.validate_app() self.assertIn(cycle_error, errors)
class ModuleAsChildTestBase(TestXmlMixin): file_path = ('data', 'suite') child_module_class = None def setUp(self): self.factory = AppFactory(build_version='2.9.0', domain=DOMAIN) self.module_0, _ = self.factory.new_basic_module('parent', 'gold-fish') self.module_1, _ = self.factory.new_module(self.child_module_class, 'child', 'guppy', parent_module=self.module_0) self.app = self.factory.app def test_basic_workflow(self): # make module_1 as submenu to module_0 XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu root="m0" id="m1"> <text> <locale id="modules.m1"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") def test_workflow_with_put_in_root(self): # make module_1 as submenu to module_0 self.module_1.put_in_root = True XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") @patch('corehq.apps.app_manager.helpers.validators.domain_has_privilege', return_value=True) @patch('corehq.apps.app_manager.models.validate_xform', return_value=None) def test_deleted_parent(self, *args): self.module_1.root_module_id = "unknownmodule" cycle_error = { 'type': 'unknown root', } errors = self.app.validate_app() self.assertIn(cycle_error, errors) @patch('corehq.apps.app_manager.helpers.validators.domain_has_privilege', return_value=True) @patch('corehq.apps.app_manager.models.validate_xform', return_value=None) def test_circular_relation(self, *args): self.module_0.root_module_id = self.module_1.unique_id cycle_error = { 'type': 'root cycle', } errors = self.app.validate_app() self.assertIn(cycle_error, errors)
class ModuleAsChildTestBase(TestXmlMixin): file_path = ('data', 'suite') child_module_class = None def setUp(self): update_toggle_cache(MODULE_FILTER.slug, DOMAIN, True, NAMESPACE_DOMAIN) self.factory = AppFactory(domain=DOMAIN) self.module_0, _ = self.factory.new_basic_module('parent', 'gold-fish') self.module_1, _ = self.factory.new_module(self.child_module_class, 'child', 'guppy', parent_module=self.module_0) self.app = self.factory.app def tearDown(self): clear_toggle_cache(MODULE_FILTER.slug, DOMAIN, NAMESPACE_DOMAIN) def test_basic_workflow(self): # make module_1 as submenu to module_0 XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu root="m0" id="m1"> <text> <locale id="modules.m1"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") def test_workflow_with_put_in_root(self): # make module_1 as submenu to module_0 self.module_1.put_in_root = True XML = """ <partial> <menu id="m0"> <text> <locale id="modules.m0"/> </text> <command id="m0-f0"/> </menu> <menu id="m0"> <text> <locale id="modules.m1"/> </text> <command id="m1-f0"/> </menu> </partial> """ self.assertXmlPartialEqual(XML, self.app.create_suite(), "./menu") def test_deleted_parent(self): self.module_1.root_module_id = "unknownmodule" cycle_error = { 'type': 'unknown root', } errors = self.app.validate_app() self.assertIn(cycle_error, errors) def test_circular_relation(self): self.module_0.root_module_id = self.module_1.unique_id cycle_error = { 'type': 'root cycle', } errors = self.app.validate_app() self.assertIn(cycle_error, errors)