From c751725c5a867a944c13e47760f9272effe0c31e Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Tue, 29 Jan 2019 12:50:47 +0200 Subject: [PATCH] move project access initialization into a separate method and add test --- annif/project.py | 15 +++++++++------ tests/test_project.py | 8 ++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/annif/project.py b/annif/project.py index 455fecd7b..893e37932 100644 --- a/annif/project.py +++ b/annif/project.py @@ -45,17 +45,20 @@ def __init__(self, project_id, config, datadir): self.name = config['name'] self.language = config['language'] self.analyzer_spec = config.get('analyzer', None) - access = config.get('access', self.DEFAULT_ACCESS) + self.vocab_id = config.get('vocab', None) + self._base_datadir = datadir + self._datadir = os.path.join(datadir, 'projects', self.project_id) + self.config = config + self._init_access() + + def _init_access(self): + access = self.config.get('access', self.DEFAULT_ACCESS) try: self.access = getattr(Access, access) except AttributeError: raise ConfigurationException( - "'%s' is not a valid access setting".format(self.access), + "'{}' is not a valid access setting".format(access), project_id=self.project_id) - self.vocab_id = config.get('vocab', None) - self._base_datadir = datadir - self._datadir = os.path.join(datadir, 'projects', self.project_id) - self.config = config def _get_datadir(self): """return the path of the directory where this project can store its diff --git a/tests/test_project.py b/tests/test_project.py index cb89c72a7..08c473d84 100644 --- a/tests/test_project.py +++ b/tests/test_project.py @@ -8,6 +8,14 @@ from annif.project import Access +def test_create_project_wrong_access(app): + with pytest.raises(ConfigurationException): + project = annif.project.AnnifProject( + 'example', + {'name': 'Example', 'language': 'en', 'access': 'invalid'}, + '.') + + def test_get_project_en(app): with app.app_context(): project = annif.project.get_project('dummy-en')