def test_report_fixtures_provider_with_cloudcare(self): """ ReportFixturesProvider should iterate only allowed apps if sync is from cloudcare """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource role = UserRole( domain=self.domain, permissions=Permissions( view_web_apps=False, view_web_apps_list=[self.app1._id] ), name='WebApp Restricted' ) role.save() self.user._couch_user.set_role(self.domain, role.get_qualified_id()) with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_datasource_config(): fixtures = call_fixture_generator( report_fixture_generator, self.user, device_id="WebAppsLogin|[email protected]" ) reports = fixtures[0].findall('.//report') self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get('id'), '123456')
def test_report_fixtures_provider_with_cloudcare(self): """ ReportFixturesProvider should iterate only allowed apps if sync is from cloudcare """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource role = UserRole( domain=self.domain, permissions=Permissions( view_web_apps=False, view_web_apps_list=[self.app1._id] ), name='WebApp Restricted' ) role.save() self.user._couch_user.set_role(self.domain, role.get_qualified_id()) with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_sql_backend(): with mock_datasource_config(): fixtures = call_fixture_generator( report_fixture_generator, self.user, device_id="WebAppsLogin|[email protected]" ) reports = fixtures[0].findall('.//report') self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get('id'), '123456')
def setUpClass(cls): super(ReportFiltersSuiteTest, cls).setUpClass() delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_uuid = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' cls.user = create_restore_user( domain=cls.domain, username='******', ) update_toggle_cache(MOBILE_UCR.slug, cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) cls.report_configs_by_id = { cls.report_id: report_configuration } cls.app = Application.new_app(cls.domain, "Report Filter Test App") module = cls.app.add_module(ReportModule.new_module("Report Module", 'en')) module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", complete_graph_configs={ '7451243209119342931': GraphConfiguration( graph_type="bar", series=[GraphSeries( config={}, locale_specific_config={}, data_path="", x_function="", y_function="", )], ) }, filters={ 'computed_owner_name_40cc88a0_1': MobileSelectFilter(), 'fav_fruit_abc123_1': MobileSelectFilter() }, uuid=cls.report_config_uuid, ) ) with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ {'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory', 'fav_fruit_abc123': 'c'}, {'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims', 'fav_fruit_abc123': 'b'}, {'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel', 'fav_fruit_abc123': 'b'}, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch('corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_sql_backend(): with mock_datasource_config(): fixture, = call_fixture_generator(report_fixture_generator, cls.user) cls.fixture = ElementTree.tostring(fixture)
def setUpClass(cls): super(ReportFiltersSuiteTest, cls).setUpClass() delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_uuid = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' cls.user = create_restore_user( domain=cls.domain, username='******', ) MOBILE_UCR.set(cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) cls.report_configs_by_id = { cls.report_id: report_configuration } cls.app = Application.new_app(cls.domain, "Report Filter Test App") module = cls.app.add_module(ReportModule.new_module("Report Module", 'en')) module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", complete_graph_configs={ '7451243209119342931': GraphConfiguration( graph_type="bar", series=[GraphSeries( config={}, locale_specific_config={}, data_path="", x_function="", y_function="", )], ) }, filters=OrderedDict([ ('fav_fruit_abc123_1', MobileSelectFilter()), ('computed_owner_name_40cc88a0_1', MobileSelectFilter()), ]), uuid=cls.report_config_uuid, ) ) with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ {'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory', 'fav_fruit_abc123': 'c'}, {'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims', 'fav_fruit_abc123': 'b'}, {'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel', 'fav_fruit_abc123': 'b'}, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch('corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_datasource_config(): fixture, = call_fixture_generator(report_fixture_generator, cls.user) cls.fixture = ElementTree.tostring(fixture)
def test_report_fixtures_provider_with_app(self): """ ReportFixturesProvider should not iterate all apps if app given """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_datasource_config(): fixtures = call_fixture_generator(report_fixture_generator, self.user, app=self.app1) reports = fixtures[0].findall('.//report') self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get('id'), '123456')
def test_user_restore(self): from casexml.apps.phone.utils import MockDevice from casexml.apps.case.xml import V3 from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_datasource_config(): device = MockDevice(self.domain_obj, self.user) restore = device.sync(version=V3).payload.decode('utf-8') self.assertIn('<fixture id="commcare:reports"', restore) self.assertIn('report_id="{id}"'.format(id=self.report_config1._id), restore) self.assertIn('report_id="{id}"'.format(id=self.report_config2._id), restore)
def test_report_fixtures_provider_with_app(self): """ ReportFixturesProvider should not iterate all apps if app given """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_sql_backend(): with mock_datasource_config(): fixtures = call_fixture_generator(report_fixture_generator, self.user, app=self.app1) reports = fixtures[0].findall('.//report') self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get('id'), '123456')
def test_user_restore(self): from casexml.apps.phone.tests.utils import MockDevice from casexml.apps.case.xml import V3 from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_sql_backend(): with mock_datasource_config(): device = MockDevice(self.domain_obj, self.user) restore = device.sync(version=V3).payload self.assertIn('<fixture id="commcare:reports"', restore) self.assertIn('report_id="{id}"'.format(id=self.report_config1._id), restore) self.assertIn('report_id="{id}"'.format(id=self.report_config2._id), restore)
def test_report_fixtures_provider_with_app(self): """ ReportFixturesProvider should not iterate all apps if app given """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, "get_data") as get_data_mock: get_data_mock.return_value = self.rows with mock_sql_backend(): with mock_datasource_config(): fixtures = report_fixture_generator(self.user, "2.0", None, app=self.app1) reports = fixtures[0].findall(".//report") self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get("id"), "123456")
def test_report_fixtures_provider_without_app(self): """ ReportFixturesProvider should iterate all apps if app not given """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_datasource_config(): fixtures = call_fixture_generator(report_fixture_generator, self.user) reports = fixtures[0].findall('.//report') self.assertEqual(len(reports), 2) report_ids = {r.attrib.get('id') for r in reports} self.assertEqual(report_ids, {'123456', 'abcdef'})
def test_group_by_missing_from_columns(self): report_config = ReportConfiguration(domain='somedomain', config_id='someconfig', aggregation_columns=['doc_id'], columns=[{ "type": "field", "field": "somefield", "format": "default", "aggregation": "sum" }], filters=[], configured_charts=[]) data_source = ConfigurableReportDataSource.from_spec(report_config) with mock_datasource_config(): self.assertEqual(['doc_id'], data_source.group_by)
def test_default_mobile_ucr_sync_interval(self): """ When sync interval is set, ReportFixturesProvider should provide reports only if the interval has passed since the last sync or a new build is being requested. """ from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource with patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock: get_data_mock.return_value = self.rows with mock_datasource_config(): self.domain_obj.default_mobile_ucr_sync_interval = 4 # hours two_hours_ago = datetime.utcnow() - timedelta(hours=2) recent_sync = SimplifiedSyncLog( domain=self.domain_obj.name, date=two_hours_ago, user_id='456', build_id=self.app1.get_id, ) recent_sync.save() fixtures = call_fixture_generator(report_fixture_generator, self.user, app=self.app1, last_sync=recent_sync, project=self.domain_obj) reports = self._get_fixture(fixtures, ReportFixturesProviderV1.id) self.assertIsNone(reports) recent_sync_new_build = SimplifiedSyncLog( domain=self.domain_obj.name, date=two_hours_ago, user_id='456', build_id='123', ) recent_sync_new_build.save() fixtures = call_fixture_generator( report_fixture_generator, self.user, app=self.app1, last_sync=recent_sync_new_build, project=self.domain_obj) reports = self._get_fixture( fixtures, ReportFixturesProviderV1.id).findall('.//report') self.assertEqual(len(reports), 1) self.assertEqual(reports[0].attrib.get('id'), '123456') self.domain_obj.default_mobile_ucr_sync_interval = None
def test_group_by_missing_from_columns(self): report_config = ReportConfiguration( domain='somedomain', config_id='someconfig', aggregation_columns=['doc_id'], columns=[{ "type": "field", "field": "somefield", "format": "default", "aggregation": "sum" }], filters=[], configured_charts=[] ) data_source = ConfigurableReportDataSource.from_spec(report_config) with mock_datasource_config(): self.assertEqual(['doc_id'], data_source.group_by)
def test_get_report_fixture_for_user(self): from corehq.apps.userreports.reports.data_source import ConfigurableReportDataSource from corehq.apps.userreports.tests.utils import mock_datasource_config from corehq.apps.app_manager.models import ReportAppConfig app_report_config = ReportAppConfig.wrap({ 'report_id': self.report_config1.get_id, 'uuid': 'abcdef' }) with mock.patch.object(ConfigurableReportDataSource, 'get_data') as get_data_mock, \ mock.patch('custom.icds.messaging.indicators.get_report_configs') as get_report_configs: get_report_configs.return_value = {'test_id': app_report_config} get_data_mock.return_value = [{'owner': 'bob', 'count': 3, 'is_starred': True}] with mock_datasource_config(): fixture = _get_report_fixture_for_user(self.domain, 'test_id', self.user).decode('utf8') self.assertIn(self.report_config1.get_id, fixture)
def setUpClass(cls): delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_uuid = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' cls.user = create_restore_user( domain=cls.domain, username='******', ) update_toggle_cache(MOBILE_UCR.slug, cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) cls.report_configs_by_id = { cls.report_id: report_configuration } cls.app = Application.new_app(cls.domain, "Report Filter Test App") module = cls.app.add_module(ReportModule.new_module("Report Module", 'en')) module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", graph_configs={ '7451243209119342931': ReportGraphConfig( series_configs={'count': {}} ) }, filters={'computed_owner_name_40cc88a0_1': MobileSelectFilter()}, uuid=cls.report_config_uuid, ) ) with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ {'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory'}, {'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims'}, {'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel'}, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch('corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_sql_backend(): with mock_datasource_config(): fixture, = report_fixture_generator(cls.user, '2.0') cls.fixture = ElementTree.tostring(fixture)
def setUpClass(cls): super(ReportFiltersSuiteTest, cls).setUpClass() delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_mobile_id = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' create_domain(cls.domain) cls.user = create_restore_user( domain=cls.domain, username='******', ) MOBILE_UCR.set(cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) # also make a report with a hidden column cls.hidden_column_report_id = 'bd2a43018ad9463682165c1bc16347ac' cls.hidden_column_mobile_id = '45152061d8dc4d2a8d987a0568abe1ae' report_configuration_with_hidden_column = MAKE_REPORT_CONFIG( cls.domain, cls.hidden_column_report_id, columns=[ FieldColumn(type='field', aggregation="simple", column_id="color_94ec39e6", display="color", field="color_94ec39e6").to_json(), FieldColumn( type='field', aggregation="simple", column_id="hidden_color_94ec39e6", display="color", field="color_94ec39e6", visible=False, ).to_json(), ]) cls.report_configs_by_id = { cls.report_id: report_configuration, cls.hidden_column_report_id: report_configuration_with_hidden_column } cls.app = Application.new_app(cls.domain, "Report Filter Test App") module = cls.app.add_module( ReportModule.new_module("Report Module", 'en')) module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", complete_graph_configs={ '7451243209119342931': GraphConfiguration( graph_type="bar", series=[ GraphSeries( config={}, locale_specific_config={}, data_path="", x_function="", y_function="", ) ], ) }, filters=OrderedDict([ ('fav_fruit_abc123_1', MobileSelectFilter()), ('computed_owner_name_40cc88a0_1', MobileSelectFilter()), ]), uuid=cls.report_config_mobile_id, )) module.report_configs.append( ReportAppConfig( report_id=cls.hidden_column_report_id, header={}, description="", complete_graph_configs={}, filters={}, uuid=cls.hidden_column_mobile_id, )) with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ { 'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory', 'fav_fruit_abc123': 'c' }, { 'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims', 'fav_fruit_abc123': 'b' }, { 'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel', 'fav_fruit_abc123': 'b' }, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch( 'corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_datasource_config(): fixture, = call_fixture_generator( report_fixture_generator, cls.user) cls.fixture = ElementTree.tostring(fixture)
def setUpClass(cls): super(ReportFiltersSuiteTest, cls).setUpClass() delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_mobile_id = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' create_domain(cls.domain) cls.user = create_restore_user( domain=cls.domain, username='******', ) MOBILE_UCR.set(cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) # also make a report with a hidden column cls.hidden_column_report_id = 'bd2a43018ad9463682165c1bc16347ac' cls.hidden_column_mobile_id = '45152061d8dc4d2a8d987a0568abe1ae' report_configuration_with_hidden_column = MAKE_REPORT_CONFIG( cls.domain, cls.hidden_column_report_id, columns=[ FieldColumn( type='field', aggregation="simple", column_id="color_94ec39e6", display="color", field="color_94ec39e6" ).to_json(), FieldColumn( type='field', aggregation="simple", column_id="hidden_color_94ec39e6", display="color", field="color_94ec39e6", visible=False, ).to_json(), ] ) cls.report_configs_by_id = { cls.report_id: report_configuration, cls.hidden_column_report_id: report_configuration_with_hidden_column } cls.app = Application.new_app(cls.domain, "Report Filter Test App") module = cls.app.add_module(ReportModule.new_module("Report Module", 'en')) module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", complete_graph_configs={ '7451243209119342931': GraphConfiguration( graph_type="bar", series=[GraphSeries( config={}, locale_specific_config={}, data_path="", x_function="", y_function="", )], ) }, filters=OrderedDict([ ('fav_fruit_abc123_1', MobileSelectFilter()), ('computed_owner_name_40cc88a0_1', MobileSelectFilter()), ]), uuid=cls.report_config_mobile_id, ) ) module.report_configs.append( ReportAppConfig( report_id=cls.hidden_column_report_id, header={}, description="", complete_graph_configs={}, filters={}, uuid=cls.hidden_column_mobile_id, ) ) with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ {'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory', 'fav_fruit_abc123': 'c'}, {'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims', 'fav_fruit_abc123': 'b'}, {'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel', 'fav_fruit_abc123': 'b'}, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch('corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_datasource_config(): fixture, = call_fixture_generator(report_fixture_generator, cls.user) cls.fixture = ElementTree.tostring(fixture)
def setUpClass(cls): super(ReportFiltersSuiteTest, cls).setUpClass() delete_all_users() cls.report_id = '7b97e8b53d00d43ca126b10093215a9d' cls.report_config_mobile_id = 'a98c812873986df34fd1b4ceb45e6164ae9cc664' cls.domain = 'report-filter-test-domain' create_domain(cls.domain) cls.user = create_restore_user( domain=cls.domain, username='******', ) MOBILE_UCR.set(cls.domain, True, NAMESPACE_DOMAIN) ADD_ROW_INDEX_TO_MOBILE_UCRS.set(cls.domain, True, NAMESPACE_DOMAIN) report_configuration = cls.make_report_config(cls.domain, cls.report_id) # also make a report with a hidden column cls.hidden_column_report_id = 'bd2a43018ad9463682165c1bc16347ac' cls.hidden_column_mobile_id = '45152061d8dc4d2a8d987a0568abe1ae' report_configuration_with_hidden_column = MAKE_REPORT_CONFIG( cls.domain, cls.hidden_column_report_id, columns=[ FieldColumn( type='field', aggregation="simple", column_id="color_94ec39e6", display="color", field="color_94ec39e6" ).to_json(), FieldColumn( type='field', aggregation="simple", column_id="hidden_color_94ec39e6", display="color", field="color_94ec39e6", visible=False, ).to_json(), ] ) cls.report_configs_by_id = { cls.report_id: report_configuration, cls.hidden_column_report_id: report_configuration_with_hidden_column } cls.app = Application.new_app(cls.domain, "Report Filter Test App") report_module = cls.app.add_module(ReportModule.new_module("Report Module", 'en')) report_module.report_context_tile = True report_module.report_configs.append( ReportAppConfig( report_id=cls.report_id, header={}, description="", complete_graph_configs={ '7451243209119342931': GraphConfiguration( graph_type="bar", series=[GraphSeries( config={}, locale_specific_config={}, data_path="", x_function="", y_function="", )], ) }, filters=OrderedDict([ ('fav_fruit_abc123_1', MobileSelectFilter()), ('computed_owner_name_40cc88a0_1', MobileSelectFilter()), ]), uuid=cls.report_config_mobile_id, ) ) report_module.report_configs.append( ReportAppConfig( report_id=cls.hidden_column_report_id, header={}, description="", complete_graph_configs={}, filters={}, uuid=cls.hidden_column_mobile_id, ) ) case_module = cls.app.add_module(Module.new_module("Case Module", 'en')) case_module.case_type = "fish" case_module.report_context_tile = True case_form = case_module.new_form("Update Fish", None) case_form.requires = "case" case_form.xmlns = "http://openrosa.org/formdesigner/2423EFB5-2E8C-4B8F-9DA0-23FFFD4391AF" survey_module = cls.app.add_module(Module.new_module("Survey Module", 'en')) survey_module.report_context_tile = True survey_form = survey_module.new_form("Survey", None) survey_form.xmlns = "http://openrosa.org/formdesigner/2423EFB5-2E8C-4B8F-9DA0-23FFFD4391AE" with mock_report_configurations(cls.report_configs_by_id): cls.suite = cls.app.create_suite() cls.data = [ {'color_94ec39e6': 'red', 'count': 2, 'computed_owner_name_40cc88a0': 'cory', 'fav_fruit_abc123': 'c'}, {'color_94ec39e6': 'black', 'count': 1, 'computed_owner_name_40cc88a0': 'ctsims', 'fav_fruit_abc123': 'b'}, {'color_94ec39e6': 'red', 'count': 3, 'computed_owner_name_40cc88a0': 'daniel', 'fav_fruit_abc123': 'b'}, ] with mock_report_data(cls.data): with mock_report_configuration_get(cls.report_configs_by_id): with mock.patch('corehq.apps.app_manager.fixtures.mobile_ucr.get_apps_in_domain', lambda domain, include_remote: [cls.app]): with mock_datasource_config(): fixtures = call_fixture_generator(report_fixture_generator, cls.user) fixture = [f for f in fixtures if f.attrib.get('id') == ReportFixturesProviderV1.id][0] cls.fixture = ElementTree.tostring(fixture, encoding='utf-8')