diff --git a/src/glicid_spawner/spawner.py b/src/glicid_spawner/spawner.py index 3d4d70b..fd8d648 100644 --- a/src/glicid_spawner/spawner.py +++ b/src/glicid_spawner/spawner.py @@ -1,7 +1,7 @@ """GLiCID spawner module.""" from batchspawner import SlurmSpawner -from traitlets import Unicode +from traitlets import Unicode, default from .form import options_form, options_from_form @@ -9,11 +9,15 @@ from .form import options_form, options_from_form class GlicidSpawner(SlurmSpawner): """Glicid SLURM Spawner.""" - batchspawner_singleuser_cmd = Unicode( + glicid_singleuser_cmd = Unicode( 'glicid-spawner-singleuser', help='Glicid spawner singleuser command.', ).tag(config=True) + @default('batchspawner_singleuser_cmd') + def _batchspawner_singleuser_cmd_default(self): + return self.glicid_singleuser_cmd + def options_form(self) -> str: """JupyterHub rendered form template.""" return options_form(self.user.name) diff --git a/tests/test_spawner.py b/tests/test_spawner.py new file mode 100644 index 0000000..c71574e --- /dev/null +++ b/tests/test_spawner.py @@ -0,0 +1,38 @@ +"""Test GLiCID spawner module.""" + +from collections import namedtuple + +import glicid_spawner.spawner +from batchspawner import SlurmSpawner +from glicid_spawner import GlicidSpawner + +User = namedtuple('User', 'name') + + +def test_spawner_config(): + """Test spawner configuration.""" + spawner = GlicidSpawner() + + assert isinstance(spawner, GlicidSpawner) + assert isinstance(spawner, SlurmSpawner) + + assert spawner.glicid_singleuser_cmd == 'glicid-spawner-singleuser' + assert spawner.batchspawner_singleuser_cmd == 'glicid-spawner-singleuser' + + +def test_spawner_options_form(monkeypatch): + """Test spawner options form.""" + monkeypatch.setattr( + glicid_spawner.spawner, 'options_form', lambda username: f"options_form('{username}')" + ) + monkeypatch.setattr( + glicid_spawner.spawner, + 'options_from_form', + lambda formdata: f'options_from_form({formdata})', + ) + + spawner = GlicidSpawner(user=User('john-doe')) + + assert spawner.user.name == 'john-doe' + assert spawner.options_form() == "options_form('john-doe')" + assert spawner.options_from_form({'foo': 123}) == "options_from_form({'foo': 123})"