# -*- coding: utf-8 -*- import logging from .test_project_base import TestProjectCommon _logger = logging.getLogger(__name__) class TestProjectConfig(TestProjectCommon): """Test module configuration and its effects on projects.""" @classmethod def setUpClass(cls): super(TestProjectConfig, cls).setUpClass() cls.Project = cls.env["project.project"] cls.Settings = cls.env["res.config.settings"] cls.features = ( # Pairs of associated (config_flag, project_flag) ("group_project_rating", "rating_active"), ) # Start with a known value on feature flags to ensure validity of tests cls._set_feature_status(is_enabled=False) @classmethod def _set_feature_status(cls, is_enabled): """Set enabled/disabled status of all optional features in the project app config to is_enabled (boolean). """ features_config = cls.Settings.create( {feature[0]: is_enabled for feature in cls.features}) features_config.execute() def test_existing_projects_enable_features(self): """Check that *existing* projects have features enabled when the user enables them in the module configuration. """ self._set_feature_status(is_enabled=True) for config_flag, project_flag in self.features: self.assertTrue( self.project_pigs[project_flag], "Existing project failed to adopt activation of " f"{config_flag}/{project_flag} feature") def test_new_projects_enable_features(self): """Check that after the user enables features in the module configuration, *newly created* projects have those features enabled as well. """ self._set_feature_status(is_enabled=True) project_cows = self.Project.create({ "name": "Cows", "partner_id": self.partner_1.id}) for config_flag, project_flag in self.features: self.assertTrue( project_cows[project_flag], f"Newly created project failed to adopt activation of " f"{config_flag}/{project_flag} feature") def test_project_stages_feature_enable_views(self): """Check that the Gantt, Calendar and Activities views are enabled when the 'Project Stage' feature is enabled. """ self.Settings.create({"group_project_stages": True}).execute() # enabling feature menu_ids = set([self.env.ref('project.menu_projects').id, self.env.ref('project.menu_projects_config').id]) menu_loaded = set(self.env['ir.ui.menu']._load_menus_blacklist()) self.assertTrue(menu_ids.issubset(menu_loaded), "The menu project and menu projects config should be loaded")